#include <iostream>
#include <string>
using namespace std;
/************************************************************************
类友元
访问其他类的私有属性,需要声明为该类的友元
成员函数友元
若不想类友元,只想单独类中的某个成员函数访问其他类的私有成员,可以将成员函数设置为其他类的成员函数友元
/************************************************************************/
//先声明Building类,表明该类存在
class Building;
class GoodFriend{
public:
//类中声明,类外实现
GoodFriend();
void friend_visit();
~GoodFriend();
private:
Building *m_pbld;//若想访问其他类成员,需要声明一个类对象作为成员
};
class Building
{
//1.声明GoodFriend是Building的朋友,可以访问该类的私有数据成员;
friend class GoodFriend;
//2. (先注释掉类友元声明)告诉编译器GoodFriend下的friend_visit()函数作为本类的朋友,可以访问本类的私有成员
friend void GoodFriend::friend_visit();
public:
Building();
string m_sitting_room;
private:
string m_bed_room;
};
//函数类内声明,类外实现
Building::Building()
{
m_sitting_room="客厅";
m_bed_room = "卧室";
}
//加上GoodFriend类作用域,函数实现需要写在Building构造函数之后,因为new Building会调用构造函数,不然找不到实现;
GoodFriend::GoodFriend()
{
m_pbld = new Building;//调用构造函数
}
//析构
GoodFriend::~GoodFriend()
{
if(m_pbld != NULL)
{
delete m_pbld;
}
}
void GoodFriend::friend_visit()
{
cout<<"sitting_room:"<<m_pbld->m_sitting_room<<endl;
cout<<"bed_room:"<<m_pbld->m_bed_room<<endl;
}
void test1()
{
GoodFriend gf;
gf.friend_visit();
}
int main()
{
test1();
return 0;
}
C++ 类友元和成员函数友元
最新推荐文章于 2025-05-24 19:31:42 发布
本文深入探讨了C++中的类友元概念,包括如何使一个类能够访问另一个类的私有成员,以及如何将特定成员函数声明为友元,以实现对其他类私有成员的访问。通过具体代码示例,详细讲解了友元类和友元函数的使用方法。
482

被折叠的 条评论
为什么被折叠?



