友元

友元的目的:让一个函数或者类访问一个类中的私有成员

关键字: friend

1. 全局函数做友元

class Building
{
    //goodFriend函数可以访问私有成员
    friend void goodFriend(Building &build); //全局函数做友元
public:
    string m_SittingRoom;   //客厅
    Building();
private:
    string m_BedRoom;   //卧室

};

Building::Building()
{
    m_SittingRoom = "客厅";
    m_BedRoom = "卧室";
}

//全局函数
void goodFriend(Building &build)
{
    cout << "好朋友正在访问: " << build.m_SittingRoom << endl;
    cout << "好朋友正在访问: " << build.m_BedRoom << endl; 
}

2. 类做友元

class Building
{
    //GoodFriend类做友元
    friend class GoodFriend;
public:
    string m_SittingRoom;   //客厅
    Building();
private:
    string m_BedRoom;   //卧室

};
Building::Building()
{
    m_SittingRoom = "客厅";
    m_BedRoom = "卧室";
}
////////////////////////////////////////////////
class GoodFriend
{
public:
    GoodFriend();
    Building * building;
    void visit(); //访问building中的属性

private:

};
GoodFriend::GoodFriend()
{
    //创建建筑物对象
    building = new Building;
}
////////////////////////////////////////////////
void GoodFriend::visit()
{
    cout << "好朋友类正在访问: " << this->building->m_SittingRoom << endl;
    cout << "好朋友类正在访问: " << this->building->m_BedRoom << endl;
}

3. 成员函数做友元

class Building;

class GoodFriend
{
public:
    GoodFriend();
    void visit(); //访问building中的属性
    Building * building;
    
};

class Building
{
    //GoodFriend::visit()成员函数做友元
    friend void GoodFriend::visit();
public:
    string m_SittingRoom;   //客厅
    Building();
private:
    string m_BedRoom;   //卧室

};

GoodFriend::GoodFriend()//注意构造函数的位置,用到了Building类,再Building之后再实现
{
    //创建建筑物对象
    building = new Building;  
}
Building::Building()
{
    m_SittingRoom = "客厅";
    m_BedRoom = "卧室";
}
void GoodFriend::visit()
{
    cout << "好朋友类正在访问: " << this->building->m_SittingRoom << endl;
    cout << "好朋友类正在访问: " << this->building->m_BedRoom << endl;
}
void test()
{
    GoodFriend f1;
    f1.visit();
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元...
    凯恩_Kane阅读 1,187评论 0 0
  • 静态成员 静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即<类名>::<静态成员名>。 ...
    黄巴巴阅读 657评论 0 2
  • 友元 友元的作用是提高了程 序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装 性和...
    青春猪头少年_阅读 341评论 0 1
  • 技术交流QQ群:1027579432,欢迎你的加入! 1.C++中的友元函数 类的友元函数是定义在类外部,但有权访...
    CurryCoder阅读 1,690评论 0 2
  • 转:关于C++中的友元函数的总结 1.友元函数的简单介绍 1.1为什么要使用友元函数 在实现类之间数据共享时,减少...
    资深小夏阅读 800评论 0 0

友情链接更多精彩内容