c++中类的友元
//友元//当在类中确定这个变量为友元时就可以让它进行访问私有变量//友元的目的就是让一个或者一个类访问另一个类中的私有成员//友元的关键词为friend//友元的三种实现//这里先来看第一种 全局函数做友元#include<iostream>#include<string>using namespace std;class building{//goodgay是build
·
//友元
//当在类中确定这个变量为友元时就可以让它进行访问私有变量
//友元的目的就是让一个或者一个类访问另一个类中的私有成员
//友元的关键词为friend
//友元的三种实现
//这里先来看第一种 全局函数做友元
#include<iostream>
#include<string>
using namespace std;
class building
{ //goodgay是building的好朋友,可以进行访问私有成员
friend void goodgay(building*building1);//定义为友元,则可以进行私有的访问
public:
building()//无参构造函数
{
m_sittingroom = "客厅";
m_bedroom = "卧室";
}
string m_sittingroom;//客厅
private:
string m_bedroom;//卧室
};
void goodgay(building*building1)//指针接收
{
cout << "好朋友全局函数正在进行访问:" << building1->m_sittingroom << endl;
cout << "好朋友全局函数正在进行访问:" << building1->m_bedroom <<endl;//若此时未定义友元,则无法访问
}
int main()
{
building building1;
goodgay(&building1);//传值,得用指针进行接收
return 0;
}
//类做友元
#include<iostream>
#include<string>
using namespace std;
class Building;//先进行声名一下我待会会写building这个类,你先不要进行报错
class goodgay
{
public:
void visit();//参观函数,访问building中的属性
Building*building;//building类型的指针
goodgay();//类外使用,类内声名
};
class Building
{
friend class goodgay;//这里加上友元就可以进行访问
public:
string m_sittingroom;//客厅
Building();//类外使用,类内声名
private:
string m_bedroom;//卧室
};
//进行类外写成员函数
Building::Building()
{
m_sittingroom = "客厅";
m_bedroom = "卧室";
}
goodgay::goodgay()
{
//创建建筑物类型的对象
building = new Building;
}
void goodgay::visit()
{
cout << "好朋友正在进行访问:" << building->m_sittingroom << endl;
cout << "好朋友正在进行访问:" << building->m_bedroom << endl;//若此时不是友元则不能进行访问,要是把它设置成友元则可以进行访问
}
int main()
{
goodgay gg;
gg.visit();
return 0;
}
//成员函数做友元
#include<iostream>
#include<string>
using namespace std;
class Building;//先进行声名,防止后面报错
class goodgay
{
public:
goodgay();
void visit();//让它可以进行访问building中的私有成员
void visit2();//让它不可以进行访问building中的私有成员
Building *building;
};
class Building
{
friend void goodgay::visit();//告诉编译器goodgay类中的visit是本类的好朋友,可以进行访问私有变量
public:
Building();
string m_sittingroom;//客厅
private:
string m_bedroom;//卧室
};
//类外实现成员函数
Building::Building()
{
m_sittingroom = "客厅";
m_bedroom = "卧室";
}
goodgay::goodgay()
{
building = new Building;//开辟空间
}
void goodgay::visit()//可以进行访问私有变量
{
cout << "visit正在进行访问" << building->m_sittingroom << endl;
cout << "visit正在进行访问" << building->m_bedroom << endl;
}
void goodgay::visit2()//不可以进行访问私有变量,因为他不是Building类中的好朋友
{
cout << "visit2正在进行访问" << building->m_sittingroom << endl;
//cout << "visit2正在进行访问" << building->m_bedroom << endl;
}
int main()
{
goodgay gg;
gg.visit();
gg.visit2();
return 0;
}
更多推荐
所有评论(0)