友元

作者: 温柔倾怀 | 来源:发表于2020-04-29 15:00 被阅读0次

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

关键字: 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();
}

相关文章

  • 第十一章 使用类(2)友元

    (二)友元 1.友元的概念 友元有三种:友元函数,友元类,友元成员函数。这里主要介绍友元函数。通过让函数成为类的...

  • 友元类和嵌套类

    友元类 友元函数用于类的扩展接口中,类并非只能拥有友元函数,也可以将类作为友元,该类称为友元类。 友元类的所有方法...

  • 友元函数/友元类

    引入 当某一类或函数需要访问或使用另一类的私有函数或变量时,引入友元。例如:你的银行卡号是私有的,别人不能访问,但...

  • C++入门10 -- 友元,内部类,运算符重载

    友元 友元包含友元函数和友元类; 若将函数A(非成员函数)声明为类C的友元函数,那么函数A就能直接访问类C对象的所...

  • C++ 友元,内部类,运算符重载

    友元 友元包括友元函数和友元类 如果将函数A(非成员函数)声明为类C的友元函数,那么函数A就能直接访问类C对象的所...

  • 友元(友元函数、友元类和友元成员函数) C++

    原文地址: https://www.cnblogs.com/zhuguanhao/p/6286145.html 有...

  • c++ 友元

    在c++中,通过关键字friend声明为友元。友元可以范围与其有好友关系的类中私有成员。友元包括友元函数和友元类。...

  • 友元

    某些情况下,需要在类的外部直接访问私有和保护成员,以提高效率,避免参数传递、类型检查和安全性造成时间浪费。为此,引...

  • 友元

    ^友元的概念和定义 遵循一定规则而使对象以外的软件系统能够不经过消息传递方式直接使用访问对象内封装数据成员的技术方...

  • 友元

    1.友元的三种形式 (1).普通的非成员函数被定义为类的友元函数 友元函数的声明可以放在私有部分,也可在公有部分,...

网友评论

      本文标题:友元

      本文链接:https://www.haomeiwen.com/subject/cuagwhtx.html