语言/C {friend
关键字,友元函数,友元类}
friend
关键字
定义
friend
称之为 友元, 他所修饰的东西 比如friend X;
, 可使得X
能够访问当前类的所有private
私有内容;
性质
friend
关键字 必须只能 出现在class类的定义域里面, 即class ?{ friend ...; };
不能在类外面;
@DELI;
友元 是不受public/private
的限制的, 因为这与外界用户无关, 即friend X;
整个语句 你放到private:
下面 效果都是一样的;
友元函数
定义
class ST{
friend void F();
};
void F(){
可以访问`ST的private`;
}
@DELI;
这个*全局函数* 他的实现 不能放到类里面, 即`friend void F(){ ...}`这是错误的!!!
但有一个例外, 如果是*运算符重载*, 那么可以写到类内;
即`friend ? operator?(){ ...}`这是可以的, 可以直接把整个函数放到类内, 但注意 此时你就不能再*全局域*里 再写一个相同的重载函数;
友元类
定义
class ST{
friend class T; // T这个类 可以访问`ST的private`;
};