类的继承私有成员问题
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 ; }
监视窗体例如以下图:
执行结果例如以下:
由以上可知,基类的私有成员被派生类继承了,而类的对象空间没有响应的常规函数成员的分布。同一时候依据类的对象的内存空间的分布。我们能够在类外訪问类的私有成员。
相关文章推荐
- github简单指令
- 2015年十大热门Android开源新项目
- 华为机试——查找组成一个偶数最接近的两个素数
- Python — PyPi共享你的代码
- 安装nginx踩到的坑
- Web请求响应简单整理
- 2015年十大热门Android开源新项目
- 2015年终总结及2016计划
- 运维技能大全 | Devops Tools 周期表
- 每个Android开发者都应该了解的资源列表
- 个人技能准备
- 链队
- 每个Android开发者都应该了解的资源列表
- BZOJ 2843 LCT
- Mysql 常用命令集
- Java23种设计模式学习笔记【目录总贴】
- Android开发者必须深入学习的10个应用开源项目
- scp命令
- 深入浅出之Zygote
- Java泛型-类型擦除