使用参考变量修改类私有变量

时间:2019-05-26 16:17:09

标签: c++ c++11

我在玩参考变量。而且我了解到我可以使用类的引用直接从类外部修改类私有变量。 这是代码:

#include <iostream>
using namespace std;
#define print(x) cout<<x<<endl;

class prison
{
private:
    int victim;

public:
    prison(int ele)
    {
        victim = ele;                       
    }

    int & lophol()
    {
        return victim;    
    }

    void info()
    {
        print(victim)
    }
};

int main()
{
    prison sam{0};
    int &culprit = sam.lophol();
    culprit++;
    culprit++;
    sam.info();
}
Output:
$$ g++ -std=c++11 exp.cpp && ./a.out 
2

我可以通过引用访问私有变量。 这种行为可以吗?

1 个答案:

答案 0 :(得分:2)

从技术上讲,即使是从类外部,也可以通过引用访问私有变量。但是,请记住,将对私有变量的引用泄露给外部世界与“私有”的思想相冲突。出于某些原因,请阅读section about minimizing exposure to members in the C++ Core Guidelines,以保持成员的私密性。