当前位置: 首页 > news >正文

C++系列-继承中的对象模型

继承中的对象模型

  • 通过查看子类的内存大小
  • 通过Developer Command Prompt查看结构


山中问答
李白 〔唐代〕
问余何意栖碧山,笑而不答心自闲。
桃花流水窅然去,别有天地非人间。


  • 无论哪种继承方式,父类中的private成员在子类中均不可以访问。
  • public继承中,父类中public和protected权限到子类中不变。
  • protected继承中,父类中的public和protected权限到子类中变为protected。
  • private继承中,父类中的public和protected权限到子类中变为private。

那么问题来了,父类中的private成员,是不是并不属于子类对象中呢
可无法在子类中访问它,又该如何去验证呢?

  • 看内存大小
  • 看对象结构图

结论先呈上:

  • 父类中所有非静态成员属性都会被子类继承。
  • 父类中私有的成员属性在子类中被编译器隐藏,虽访问不到,但是确实继承了。

通过查看子类的内存大小

code:
#include <iostream>
using namespace std;class Base
{
public:int m_a;
protected:int m_b;
private:int m_c;
};class Son : public Base
{
public:int m_d;
};void test_inherit_object_model()
{cout << "sizeof Son: " << sizeof(Son) << endl;
}int main()
{test_inherit_object_model();system("pause");return 0;
}result:
sizeof Son: 16

通过Developer Command Prompt查看结构

  • 在vs的安装路径下打开Developer Command Prompt执行文件,进入代码所在的路径。
  • cl /d1 reportSingleClassLayoutAlpaca rhombus_inherit.cpp
    在这里插入图片描述
    在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring Boot 使用 MongoDB 教程
  • SpringBoot日志整合
  • 大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
  • 第五天:java网络编程、JDBC与高级特性概览
  • 推荐一个根据后台提供的接口json文件自动生成前端调用接口的插件typescript
  • Mysql基础篇
  • Java高级Day28-让坦克动起来
  • 保命指南,家里有浮毛、异味竟会危害健康?去浮毛空气净化器推荐
  • vue的混入介绍
  • 我常用的几个傻瓜式爬虫工具,收藏!
  • Luminar Neo for Mac/Win:创新AI图像编辑软件的强大功能
  • vuex properties of undefined (reading ‘getters‘)
  • k8s 存储卷管理 持久卷 pv/pvc 临时卷
  • ESP32播放网络音频文件
  • ECMAScript的`Array.from()`:将可迭代对象转换为数组的利器
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • learning koa2.x
  • Linux快速复制或删除大量小文件
  • passportjs 源码分析
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 闭包,sync使用细节
  • 码农张的Bug人生 - 初来乍到
  • 配置 PM2 实现代码自动发布
  • 如何设计一个比特币钱包服务
  • 入门到放弃node系列之Hello Word篇
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 我与Jetbrains的这些年
  • 延迟脚本的方式
  • 一份游戏开发学习路线
  • 怎么将电脑中的声音录制成WAV格式
  • 选择阿里云数据库HBase版十大理由
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ## 基础知识
  • $refs 、$nextTic、动态组件、name的使用
  • (C#)获取字符编码的类
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)php新闻发布平台 毕业设计 141646
  • (十一)c52学习之旅-动态数码管
  • (转载)Google Chrome调试JS
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .NET Micro Framework初体验
  • .NET/C# 使用反射注册事件
  • .NET关于 跳过SSL中遇到的问题
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .NET中使用Redis (二)
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • ??eclipse的安装配置问题!??
  • @Slf4j idea标红Cannot resolve symbol ‘log‘
  • @SuppressWarnings(unchecked)代码的作用