关于派生中的访问声明
假设为私有继承我在很多地方都看到“访问声明不能改变类成员原来在基类中的成员性质,只能把原基类的保护成员调整为派生类的保护成员,原基类的公有成员调整为派生类的公有成员。”
但是明明在子类的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; }
以上代码正常运行!!!
怎么回事??