C++——友元函数与友元类

C++——友元函数与友元类

  • 定义

友元提供了一种 普通函数或者类成员函数 访问另一个类中的私有或保护成员的机制。

优点:可以访问类的私有成员

缺点:破坏了类的封装性

  • 使用场景

当两个类之间深度耦合,A类需要访问B类的私有成员变量此时有以下几种方法

  1. 方法一:将B的私有成员变量改为public属性,但这明显不合理,要求是只想让A可以访问到
  2. 方法二:给每个成员加一个set和get方法,不好的地方变相的把私有成员变成了公有,set和get的方法代码量也不小
  3. 方法三:将A声明为B的友元类

三种方法可以看出第三种会更符合要求一点

  • 代码示例

#include
#include
using namespace std;
class person;
class dog{
    private:
        string behav;
    public:
    friend class person;
        dog(){
            behav = "跑步";
        }   
};

class person{
    private:
        dog *m_dog;
    public:
        person() {
            m_dog =  new dog();
        }
        void per_behav() {
            cout<<"遛狗 dog"<behav;
        }
};

int main() {
    person p;
    p.per_behav();
    return 0;
}

 

你可能感兴趣的:(C++基础知识点,c++,友元)