码迷,mamicode.com
首页 > 其他好文 > 详细

类的继承私有成员问题

时间:2014-09-29 16:48:31      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:c++   内存   对象   sizeof      

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

代码如下:

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

监视窗口视图如下:

bubuko.com,布布扣

运行结果如下:

bubuko.com,布布扣

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

类的继承私有成员问题

标签:c++   内存   对象   sizeof      

原文地址:http://blog.csdn.net/zllbuaa/article/details/39670063

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!