C++ 在C++;

C++ 在C++;,c++,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

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

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
}
CLASSE类
{
私人:
int X;
公众:
CLASSE(intx){x=x;}
int GetX(){return X;}
void CopyFrom(CLASSE Src){X=Src.X;}
};
主要()
{
A类=123;
B类=456;

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

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


私有成员函数也是如此。

访问修饰符不关心实例,只关心类型。如果您可以访问
This->X
,则它们可以访问任何其他
类的
X
。关键字
private
意味着该类之外的任何人都不能读取它,而不是在该对象之外。您仍然可以选择to编写一个调用
GetX
CopyFrom
的定义,即使您能够直接阅读
X
。不过,这更多是一个编码风格的问题。谢谢您的回答。您能给我指一个关于这方面的参考吗?“在类之外无法访问私有成员;只能通过类的方法访问它们。”