首页 > 代码库 > 类的继承私有成员问题
类的继承私有成员问题
类的继承过程分为公有继承,保护继承和私有继承,无论哪一种继承,基类的私有成员在派生类成员中都是不可见的,可是基类的私有成员是否被派生类继承了呢?通过以下实验即可知道。
代码如下:
class Base {
public:
Base():a(5){}
private:
virtual void f() { cout << "Base::f" << endl; }
int a;
};
class Derive : public Base{
};
void main() {
Derive d;
int** pVtab = (int**)&d;
Fun pFun = (Fun)pVtab[0][0];
cout<<sizeof(Base)<<sizeof(Derive)<<endl;
pFun();
cout<<(int)pVtab[1]<<endl;
return ;
}
监视窗口视图如下:
运行结果如下:
由以上可知,基类的私有成员被派生类继承了,而类的对象空间没有响应的常规函数成员的分布。同时根据类的对象的内存空间的分布,我们可以在类外访问类的私有成员。
类的继承私有成员问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。