请阅读下面一段程序:判断1——6处是否正确
class A
public: int m_i;
protected: int m_j;
private: int m_k;
public: int m_x;
protected: int m_y;
private: int m_w;
public:
void Text(A &a,B &b)
{
m_x = a.m_i;
//1
m_y = a.m_j;
//2
m_w = a.m_k;
//3
}
}
{
};
class B:public A
{
先来分析一下关于类的访问权限,类的访问权限有public,protected,private,默认是private。public的可见性最大,任何情况下都可以访问public的成员。private和protected的可见性对于本类外都是不可见的。但是,在继承中,基类(父类)的protected的成员可以被派生类访问。
类的继承方式有
public,protected,private,
类的默认继承方式是private。类的继承方式是对基类中的成员在派生类中的访问权限的降低或持平的过程,比如继承方式是protected,那么基类中public和protected的访问权限是protected。
上面程序中错误的是2和3,其他都是正确的。有人可能认为2是正确的。我以前也是这么认为的。B对于A而言就是个外部类,外部类是不能访问A类中的protected和private的成员的。
以上有什么错误的希望大家指出,谢谢!!!