类的继承私有成员问题

来源:互联网 发布:编程代码大全 编辑:程序博客网 时间:2024/05/16 01:46

类的继承过程分为公有继承,保护继承和私有继承,无论哪一种继承,基类的私有成员在派生类成员中都是不可见的,可是基类的私有成员是否被派生类继承了呢?通过以下实验即可知道。

代码如下:

#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 ;}


监视窗口如下图:


运行结果如下:

由以上可知,基类的私有成员被派生类继承了,而类的对象空间没有响应的常规函数成员的分布。同时根据类的对象的内存空间的分布,我们可以在类外访问类的私有成员。

0 0
原创粉丝点击