Как мне получить доступ к приватным данным объекта, которые передаются по ссылке на operator= function?
Интересно, как я могу получить доступ к частным данным объекта, которые передаются по ссылке или по значению? этот код работает. Зачем? Мне нужны объяснения.
class test_t {
int data;
public:
test_t(int val = 1): data(val){}
test_t& operator=(const test_t &);
};
test_t& test_t::operator=(const test_t & o){
this->data = o.data;
return *this;
}
1 ответ
Решение
private
означает, что все случаи test_t
класс может видеть личные данные друг друга.
Если C++ должен был быть более строгим, и ограничить private
доступ к методам в одном и том же экземпляре, было бы эффективно сказать, что тип *this
"более мощный", чем тип вашего o
ссылка.
Тип *this
такой же (†), что и тип o
т.е. test_t &
, и поэтому o
может сделать все, что *this
сможет сделать.
(†) того же типа, кроме добавления const
, но это не важно здесь.