公有继承问题
这道题有问题啊,明显的的描述是正确的,但是不能访问是一回事。所以正确答案应该是C, C可以改成B类从A类公共派生,那么A类的私有成员函数可以被B类继承但不能通过对象直接使用。
这道题有问题啊,明显的的描述是正确的,但是不能访问是一回事。所以正确答案应该是C, C可以改成B类从A类公共派生,那么A类的私有成员函数可以被B类继承但不能通过对象直接使用。
2017-07-31
c++中私有成员可被继承但无法访问,有间接的方法证明:
#include <iostream>
using namespace std;
class A{
int i;
void privateFunc(){
cout<<"this is a private function of base class"<<endl;
}
public:
A(){i=5;}
int getI(){
return i;
}
void usePrivateFunc(){
privateFunc();
}
};
class B:public A{
public:
void printBaseI(){
cout<<getI()<<endl;
}
void usePrivateFunction(){
usePrivateFunc();
}
};
int main(){
B b;
b.printBaseI();
}
子类B如果没有继承父类A的私有成员i,那么对象b通过继承下来的成员函数getl()便无法访问不能被继承的i。但结果是答案为5
举报