• 类的继承私有成员问题


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

    代码例如以下:

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


    监视窗体例如以下图:


    执行结果例如以下:

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

  • 相关阅读:
    造出最好的 CMS 轮子
    搭建开发框架Express,实现Web网站登录验证
    QueryOver<T>
    NVelocity
    .NET 相依性注入
    Unity 3.5
    java socket 的参数选项解读(转)
    换种方式去分页(转)
    上海市居住证办理材料及流程
    java动态代理
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5116515.html
Copyright © 2020-2023  润新知