您的位置:首页 > 其它

类的继承私有成员问题

2016-01-09 15:12 225 查看
类的继承过程分为公有继承,保护继承和私有继承,不管哪一种继承,基类的私有成员在派生类成员中都是不可见的,但是基类的私有成员是否被派生类继承了呢?通过下面实验就可以知道。

代码例如以下:

#include <iostream>
using namespace std;
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 ;
}


监视窗体例如以下图:



执行结果例如以下:



由以上可知,基类的私有成员被派生类继承了,而类的对象空间没有响应的常规函数成员的分布。同一时候依据类的对象的内存空间的分布。我们能够在类外訪问类的私有成员。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: