![]() |
#2
ch1379544472013-05-24 17:21
|
我在很多地方都看到“访问声明不能改变类成员原来在基类中的成员性质,只能把原基类的保护成员调整为派生类的保护成员,原基类的公有成员调整为派生类的公有成员。”
但是明明在子类的public里可以对父类的protected成员使用访问声明啊?
也就是把父类的protected成员通过访问声明在子类中变为public

#include<iostream>
using namespace std;
class A
{
protected:
int a;
public:
A(int p):a(p){}
};
class B : private A
{
public:
using A::a; //访问声明,a在父类中为protected,私有继承
public:
B(int p):A(p){}
};
int main()
{
B C(1);
cout << C.a << endl;
return 0;
}
using namespace std;
class A
{
protected:
int a;
public:
A(int p):a(p){}
};
class B : private A
{
public:
using A::a; //访问声明,a在父类中为protected,私有继承
public:
B(int p):A(p){}
};
int main()
{
B C(1);
cout << C.a << endl;
return 0;
}
以上代码正常运行!!!
怎么回事??