21xrx.com
2024-09-20 06:04:56 Friday
登录
文章检索 我的文章 写文章
C++中friend的用法
2023-07-10 01:39:08 深夜i     --     --
C++ friend 访问 私有成员

C++中的friend是一个非常重要的关键字,它允许一个类或者函数访问另一个类或者函数中的私有和保护成员。在面向对象程序设计中,公有成员通常被用于供其他类或者对象调用的接口,私有成员被用于实现类中的具体业务逻辑。friend允许某些类或者函数绕过公有接口,访问该类的私有和保护成员。

使用friend关键字定义的友元函数或友元类,都可以直接访问原类的私有成员变量和私有成员函数。友元关系是单向的,被 friend声明的类或函数可以访问原类的私有和保护成员,反之则不行。友元关系破坏了类的封装性,如不恰当使用friend会使程序的可维护性、可读性降低,所以应该慎重使用friend关键字。

使用friend的例子:


#include <iostream>

using namespace std;

class Number {

private:

  int n;

public:

  Number(int x)

    n = x;

  

  friend void print(Number& num);

};

void print(Number& num)

  cout << "The value of n is: " << num.n << endl;

int main() {

  Number num(10);

  print(num);

  return 0;

}

在这个例子中,我们使用friend定义了一个名为print的函数。它可以访问Number类中的私有成员变量n。此时,print函数被称为Number类的友元函数。在main函数中,我们创建了一个Number对象,然后将其作为参数调用了print函数。由于print函数是Number类的友元函数,所以它可以直接访问Number对象中的私有成员变量n,并将其输出到屏幕上。

除了友元函数外,我们还可以定义友元类。在一个类中使用friend声明另一个类为友元,这样被声明的类就可以直接访问原类中的私有和保护成员。在实际开发中,友元类的应用比友元函数更为广泛。但是,应该注意避免友元类过多地依赖于另一个类的实现细节,否则会导致复杂的代码和耦合性的增加,降低代码的可维护性。

总之,在C++中,友元关键字提供了一种实现类封装性的开放式解决方案,但应该注意避免滥用,保证代码的简洁和可维护性,从而实现更高效、更安全、更可靠的程序。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复