c++的友元函数和友元类是什么 如何访问类的私有成员【OOP详解】

admin 百科 14
友元函数和友元类是类主动授权的访问机制,不破坏封装;友元函数非成员函数,用friend在类内声明,无this指针,需通过对象访问私有成员。

c++的友元函数和友元类是什么 如何访问类的私有成员【OOP详解】-第1张图片-佛山资讯网

友元函数和友元类是C++中突破封装限制的机制,它们可以访问类的私有(private)和保护(protected)成员,但**不破坏类的封装本质**——因为这种访问权限是类主动授予的,而非外部强行闯入。

友元函数:被授权的普通函数

友元函数不是类的成员,却能访问该类的所有私有和保护成员。它必须在类内部用 friend 关键字声明,声明时不带 friend 修饰符的定义或实现写在类外。

  • 声明位置在类内任意访问区域(public/private/protected 都可),但习惯放在 public
  • 友元函数的参数通常包含对应类的对象(或引用/指针),以便操作其私有数据
  • 它没有 this 指针,也不是成员函数,因此不能直接写 memberVar,而要通过对象名访问:obj.privateMember

例如:

class Box {
private:
    double width = 10.0;
public:
    friend void printWidth(const Box& b); // 声明友元函数
};

void printWidth(const Box& b) {
    std::cout << "Width: " << b.width; // ✅ 可直接访问私有成员 width
}

登录后复制

友元类:被整体授权的另一个类

若类 A 声明类 B 为友元,则类 B 的所有成员函数(包括构造、析构、普通成员函数)都能访问类 A 的私有和保护成员。

立即学习“C++免费学习笔记(深入)”;

标签: c++

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~