C++学习笔记3
0.概述
友元提供了一种 普通函数或者类成员函数 访问另一个类中的私有或保护成员 的机制。也就是说有两种形式的友元:
(1)友元函数:普通函数对一个访问某个类中的私有或保护成员。
(2)友元类:类A中的成员函数访问类B中的私有或保护成员
优点:提高了程序的运行效率。
缺点:破坏了类的封装性和数据的透明性。
总结: - 能访问私有成员 - 破坏封装性 - 友元关系不可传递 - 友元关系的单向性 - 友元声明的形式及数量不受限制
1.友元函数
在类声明的任何区域中声明,而定义则在类的外部。
friend <类型><友元函数名>(<参数表>);
注意,友元函数只是一个普通函数,并不是该类的类成员函数,它可以在任何地方调用,友元函数中通过对象名来访问该类的私有或保护成员。
#include <iostream>
using namespace std;
class Com
{
friend int add(Com c1, Com c2);
private:
int t;
public:
Com() : t(1)
{
}
};
int add(Com c1, Com c2)
{
return c1.t + c2.t;
}
int main()
{
Com c1, c2;
cout<<add(c1, c2