目录 Table of Contents
16 友元
朋友 元素
破坏了面向对象的封装特性, 不推荐使用
JAVA, C# 已经不再提供这种东西了
C++ 允许你用一种奇葩的方式访问私有成员
友元函数
class CObject
{
friend void PrintObject(CObject* pObject); // 告诉编译器, 这个函数是我的朋友, 它可以访问我的私有成员了
private:
int x;
public:
CObject(){}
CObject(int x)
{
this->x = x;
}
};
void PrintObject(CObject* pObject)
{
printf("%d \n",pObject->x);
}
这种语法破坏了面向对象的特性
向面向过程的一种妥协
妥协的结果就是不伦不类, 既不是面向对象又不是面向过程
friend void PrintObject(CObject* pObject);
放在结构体哪里都可以
友元类
friend class Test;
告诉编译器这个 Test 类是我的朋友, 它就可以直接访问我的私有成员
但是这种是单向的, 就是说 Test 可以访问我的私有成员, 但是我不能直接访问 Test 的私有成员
结论
看懂了这是什么就可以了
不推荐使用