c++第三次作业
友元函数
引入友元函数的原因
类具有封装、继承、多态、信息隐藏的特性,只有类的成员函数才可以访问类的私有成员,非成员函数只能访问类的公有成员。为了使类的非成员函数访问类的成员,唯一的做法就是将成员定义为public,但这样做会破坏信息隐藏的特性。基于以上原因,引入友元函数解决。
必须在类的说明中说明友元函数,说明时以关键字friend开头,后跟友元函数的函数原型,友元函数的说明可以出现在类的任何地方,包括private和public部分。
友元不是类的成员,不受类的声明区域public、private和protected的影响。
include
using namespace std;
class A {
public:
A(int val) :a(val) {}
void fun() {
cout << a << endl; //10
cout << this->a << endl; //10,等价于cout << a << endl;
}
private:
friend void fun1(const A& res);
private:
int a;
};
void fun1(const A& res) {
cout << res.a << endl; //10
}
int main(int argc, char* argv[]) {
A res(10);
res.fun();
fun1(res);
getchar();
return 0;
}