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

时间:2015-07-12 12:18:39

标签: c++ overloading private operator-keyword

我想知道我如何能够访问通过引用或值传递的对象的私有数据?这段代码有效。为什么?我需要一些解释。

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 个答案:

答案 0 :(得分:6)

private表示test_t班级的所有实例都可以看到彼此的私人数据。

如果C ++要更加严格,并限制private访问同一实例中的方法,那么有效地说*this的类型更强大"而不是o引用的类型。

*this的类型与o的类型相同(†),即test_t &,因此o可以执行*this的任何操作能做到。

(†)除了添加const之外,它的类型相同,但这里并不重要。