21xrx.com
2025-04-10 09:57:11 Thursday
文章检索 我的文章 写文章
C++中friend的用法
2023-07-10 01:39:08 深夜i     17     0
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++中,友元关键字提供了一种实现类封装性的开放式解决方案,但应该注意避免滥用,保证代码的简洁和可维护性,从而实现更高效、更安全、更可靠的程序。

  
  

评论区

请求出错了