我如何访问通过引用传递给 operator= 函数的对象的私有数据?

How do i access the private data of an object which is passed by reference to 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;
}

private表示test_tclass的所有实例都可以看到彼此的私有数据。

如果 C++ 更严格,并限制 private 对同一实例中的方法的访问,则实际上是说 *this 的类型比 "more powerful"您的 o 参考类型。

*this 的类型与 o 的类型相同 (†),即 test_t &,因此 o 可以做任何 [=13] =] 可以做到。

(†) 同类型,除了加了const,这里不重要