我想知道我如何能够访问通过引用或值传递的对象的私有数据?这段代码有效。为什么?我需要一些解释。
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;
}
答案 0 :(得分:6)
private
表示test_t
班级的所有实例都可以看到彼此的私人数据。
如果C ++要更加严格,并限制private
访问同一实例中的方法,那么有效地说*this
的类型更强大"而不是o
引用的类型。
*this
的类型与o
的类型相同(†),即test_t &
,因此o
可以执行*this
的任何操作能做到。
(†)除了添加const
之外,它的类型相同,但这里并不重要。