live long nad prosper
《C++程序设计教程》笔记之友元
在c++语言中,定义一个类后,成员函数可以访问类中的public属性。
在下面例子中,创建了一个含有sittingroom和livingroom的属性.
#include<iostream>
#include<cstring>
using namespace std;
class B{
public:
string sittingroom;//客厅是公共属性
private:
string livingroom;//卧室是私有属性
public:
B(){
sittingroom="01";
livingroom="02";
}
};
void quanju(B *b){//全局函数
cout << "-----" << b->sittingroom << endl;//访问公共属性
}
void test(){//测试函数,初始化一个实例类,并调用全局函数
B b;
quanju(&b);
}
int main()
{
test();
return 0;
}
代码执行结果为:
-----01
如果尝试在quanju函数中访问私有属性:
cout << "-----" << b->livingroom << endl;
IDE会直接报错
为了能让全局函数访问私有属性,需要使用友元,让函数访问私有属性。
#include<iostream>
#include<cstring>
using namespace std;
class B{
friend void quanju(B *b);//友元
public:
string sittingroom;
private:
string livingroom;
public:
B(){
sittingroom="01";
livingroom="02";
}
};
void quanju(B *b){
cout << "-----" << b->sittingroom << endl;
cout << "-----" << b->livingroom << endl;//访问私有属性
}
void test(){
B b;
quanju(&b);
}
int main()
{
test();
return 0;
}
友元的格式是在友元函数前加上friend。
全局函数quanju()就可以访问私有私有属性,结果为:
-----01
-----02