我如何访问通过引用传递给 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_t
class的所有实例都可以看到彼此的私有数据。
如果 C++ 更严格,并限制 private
对同一实例中的方法的访问,则实际上是说 *this
的类型比 "more powerful"您的 o
参考类型。
*this
的类型与 o
的类型相同 (†),即 test_t &
,因此 o
可以做任何 [=13] =] 可以做到。
(†) 同类型,除了加了const
,这里不重要
我想知道如何访问通过引用或值传递的对象的私有数据?此代码有效。为什么?我需要一些解释。
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_t
class的所有实例都可以看到彼此的私有数据。
如果 C++ 更严格,并限制 private
对同一实例中的方法的访问,则实际上是说 *this
的类型比 "more powerful"您的 o
参考类型。
*this
的类型与 o
的类型相同 (†),即 test_t &
,因此 o
可以做任何 [=13] =] 可以做到。
(†) 同类型,除了加了const
,这里不重要