博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C++知识点]2015.4.18
阅读量:6607 次
发布时间:2019-06-24

本文共 627 字,大约阅读时间需要 2 分钟。

1.“static_cast/强制转换”后普通函数、虚函数的表现

A基类

B子类

实例aPtr:将B实例强制抓换得到的A实例

实例bPtr:将A实例强制转换得到的B实例

总结:

(1)

aPtr因为是从B实例强制转换过来的,所以虚函数始终调用B的虚函数实现

bPtr因为是从A实例强制转换过来的,所以虚函数始终调用A的虚函数实现

(2)

static_cast和强制转换则根据转换后的结果来进行调用

2.sizeof内存对齐

   步骤一:结构体内每个变量,有效对齐值=“min(当前位置的变量类型的长度, n)”获得初步的size为num)

   步骤二:num根据“min(所有变量类型的最长长度, n)”补充对齐(到能被该值整除的地步)

范例:

#pragma pack(push, 4)

struct A{

    int a;

    short b;

    char c1;

    char c2[7];

    int d;

    char e;

}

步骤一:

内存分配如下:

a:  0 1 2 3 

b:  4 5 

c1: 6 

c2: 7 8 9 10 11 12 13

d:  16 17 18 19

e:   20

num=4+2+8+空白2+4+1=21

步骤二:

num需要填充到24才能被max(4, 4)整除,所以sizeof(A) = 24

32位和64位其他区别见:

32位    64位

转载于:https://www.cnblogs.com/lzhitian/p/4437932.html

你可能感兴趣的文章
Shell脚本 常用命令总结 二
查看>>
冰球游戏大概的模块
查看>>
ClassPathXMLApplicationContext上下文加载过程
查看>>
JS模拟select下拉菜单
查看>>
线性方程组迭代求解——Jacobi迭代算法(Python实现)
查看>>
vmware workstation14永久激活密钥分享
查看>>
iOS 多线程 之 GCD(大中枢派发)(一)
查看>>
mysql用户与权限管理笔记
查看>>
Myeclipse中打开接口实现类的快捷键
查看>>
<20190516> 一次比较糟糕的售后维修体验(某硕主板)
查看>>
iOS网络篇2-http协议通信规则
查看>>
删除sql dump中的AUTO_INCREMENT
查看>>
使用JdbcTemplate和JdbcDaoSupport
查看>>
C博客作业--指针
查看>>
版本12.2.0.1.0数据库,复制种子数据库快速创建租户数据库PDB
查看>>
吴忠军中华演出网
查看>>
编程之美 第1章 游戏之乐——游戏中碰到的题目(十一)
查看>>
mysql for Mac 下创建数据表中文显示为?的解决方法
查看>>
2016阿里巴巴73款开源产品全向图
查看>>
Glibc 和 uClibc
查看>>