在C ++中访问私有属性时的奇怪行为

时间:2018-10-04 13:43:07

标签: c++

我在尝试访问私有属性时遇到了奇怪的行为。考虑以下代码:

class CLASSE
{
    private:
         int X;
    public:
         CLASSE(int x) { X = x; }
         int  GetX(){ return X; }
         void CopyFrom(CLASSE Src){ X = Src.X; }
};

main ()
{
 CLASSE A = 123;
 CLASSE B = 456;

 cout << "A = " << A.GetX() << endl;
 cout << "B = " << B.GetX() << endl << endl;

 A.CopyFrom (B);
 cout << "A = " << A.GetX() << endl;
 // cout << "A = " << A.X << endl; *** ERROR: CLASSE::X is private
}

在main()中,尝试正确访问私有属性X会返回错误。在这种情况下,我期望的是相同的情况,允许在方法CopyFrom中访问私有属性X(但我希望会出现错误)。该代码已在DevC和代码块上进行了测试。

对此行为有解释吗?

1 个答案:

答案 0 :(得分:11)

类的每个方法都可以访问其所有数据成员,包括私有成员。

编辑:如@StoryTeller所述,他们还可以访问同一类其他对象的私有成员。

对于私有成员函数也是如此。