изменение закрытой переменной класса с использованием ссылочной переменной - PullRequest
1 голос
/ 26 мая 2019

Я играл со ссылочной переменной.И я узнал, что я могу напрямую изменять приватную переменную класса извне класса, используя ее ссылку.Вот код:

#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 Ответ

2 голосов
/ 26 мая 2019

Технически, доступ к закрытой переменной через ссылку работает - даже вне класса.Однако имейте в виду, что утечка ссылки на частную переменную во внешний мир противоречит идее «частной».Прочитайте раздел о минимизации воздействия на членов в Основных рекомендациях C ++ по некоторым причинам, по которым вы хотите сохранить конфиденциальность членов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...