Как мне получить доступ к приватным данным объекта, которые передаются по ссылке на 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 , но это не важно здесь.

Другие вопросы по тегам