live long and prosper
《C++程序设计教程》笔记之成员函数友元
这一篇讲解将成员函数作为友元
如果需要成员函数访问另一个类中的私有变量。在B类中有一个公共变量sittingroom和私有变量livingroom
在下面的代码中,G类中定义了一个visit()函数,将会访问一个B实例类中的公有属性和私有属性。
#include<iostream>
#include<string>
using namespace std;
class B;
class G{
public:
G();
B *b;
void visit();//类中的成员函数
};
class B{
void G::visit();
public:
B();
public:
string sittingroom;
private:
string livingroom;
};
G::G(){
b=new B;
};
void G::visit() {
cout<<"visit()---"<<b->sittingroom<<endl;
cout<<"visit()---"<<b->livingroom<<endl;
}
B::B() {
sittingroom="sittingroom";
livingroom="livingroom";
}
void test01(){//测试函数
G gg;
gg.visit();
gg.visit2();
}
int main()
{
test01();
return 0;
}
代码执行后:
‘std::string B::livingroom’ is private within this context
根据下面代码,将visit()函数在B类中设置为友元后,将会使
class B{
friend void G::visit();//告诉编译器Goodgay下的visit函数作为友元函数可以访问私有属性
public:
B();
public:
string sittingroom;
private:
string livingroom;
};
执行结果:
visit()—sittingroom
visit()—livingroom