[C++知识点]2015.4.18

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位其他区别见:

http://www.cnblogs.com/sara-gcj/p/3324187.html

32位    64位

时间: 2024-08-05 19:31:07

[C++知识点]2015.4.18的相关文章

《软件测试管理公开课》2015.8.7~8 深圳 2015.8.11~12 北京 2015.8.18~19上海,欢迎报名!

课时:13小时(2天) 在软件开发流程中构筑软件质量 --软件测试管理     2015.8.7~8 深圳 2015.8.11~12 北京 2015.8.18~19上海   [课程背景] 据中国软件行业协会研究报告显示,2010年1-11月,我国软件业呈快速增长态势,同比增长30%,增速比去年同期提高8.6个百分点,软件产业已成为中国高科技发展重要支柱之一,但中国软件产品质量保证手段以及测试流程和管理的规范性,与国外同行(美国.印度等)存在较大的的差距.      在软件业较发达的国家, 软件测

2015.5.18——Excel Sheet Column Number

Excel Sheet Column Number 本题收获: 1.对于字符串中字母转为ASIIC码:string s ;res = s[i]-'A'; 这个res就是数字s[i]-'A'是对ASIIC的操作. 2.对于进制的转换:利用for循环 ,%,/,数组在完成. 3.2中的数组都是从左到右的,在此题中没有按照高地位 题目: elated to question Excel Sheet Column Title Given a column title as appear in an Ex

我关注的一周技术动态 2015.10.18

分布式系统实践 1. 从Storm和Spark 学习流式实时分布式计算的设计 http://www.csdn.net/article/2014-08-04/2821018/1 要点: 流式计算并不是什么新鲜的东西, 相信很多同学也都用过. 不过之前流式计算往往都用在业务相关的地方, 随着大规模分布式系统对trace和metric数据收集的迫切需求, 基于时间序列数据库和流式计算就可以实现复杂的数据分析和汇聚功能, 这篇文章帮助大家理解流式计算的原理, 大家可以想象一下, 如果希望实时统计性能消耗

2015.8.18

开博有一段时间,总是想写点什么,但是一直没勇气写.一是不知道写什么;二是总是荒废时间,静不下心来.那么谈谈这段学习iOS的经历与感受吧. 在学习编程之前,我是从来没接触过这些东西的,完全不懂,一窍不通.从2013年10月份开始报名学习编程,14年的3月份来到北京,学到5月份.说实话,学的真是不怎么样,跟没学一样.学完没找到工作就是回家了,等着毕业.在此期间去过两家公司,都是以实习的身份去的.7月份毕业后,8月份就又回到了北京.要问我为什么回来,只能说,沈阳的工资太低,满足不了我.回到北京后找到了

Murano Weekly Meeting 2015.08.18

Meeting time: 2015.August.18th 1:00~2:00 Chairperson:  Nikolay Starodubtsev, from Mirantis Meeting summary: 1.Migrating to yaql 1.0 status.    PIC:       Stan Lagun    Status:   The Community decided to fix legacy mode function in yaql. Because the l

2015.5.18——数组的定义

数组的定义 学到的: 1.数组如何定义: 主要有两种: 数组:int a[5]; int a[]={1,2,3} 数组型时要有大小和内容至少一个. 指针:*a 指向数组的第一个元素的地址 如何创建动态数组:int *a; a = new int[n]; 或者 int *a = new int[n];注意数组的定义.上一篇文章中有定义. 1 // array-in-out.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #inclu

2015第18周五问题即机会

问题即机会,当一切问题都不存在的时候,请问你的机会在哪里? 你能达到怎样的境界,取决于你怎样认识这个世界. 对于问题,有人看到的是失望,有人看到的是机会 1.你有没有试图去改变你认为不合理的问题? 1.1 你没有尝试,只有抱怨,那你还有什么好说的.1.2 你尝试了,并且改变了,恭喜你.1.3 你尝试了,但无法改变1.3.1 你有没有反思自己的沟通方法?1.3.2 你有没有反思自己的视野和格局?很多新人,往往看不出问题的关键在哪里,如果你视野够高,格局够大,当你看到公司全景,市场竞争力所在,再看这

2015第18周四

今天又重听了之前几期的罗辑思维,发现仍有不少感悟和收获,里面有句话让我印象深刻:我们现在处在一个“复利”的社会,我们做的任何一点好事,得到的好处都会比当前得到好处更多,我们为任何一件事付出的成本也都会比当前已付出的成本的更多,跟一句名言“勿以善小而不为,勿以恶小而为之”讲的是同一个道理.我们应该以此话激励自己不作恶,多做对别人有意的事. 还有一句:有三种类型的能力可以决定你的未来,第一种是让自己变得牛逼的能力,第二种是有让周围人都愿意来帮助自己的能力,第三种是混不好也无所谓,想得开的能力.这三种

2015第18周二

今天解决了5.6个缺陷,发现简单的事情要做好也不简单,正如此才需要人来努力做好. 今天发现犯了一个错误,string的indexOf函数,返回值>=0是找到,否则-1是没找到,因为之前的不小心隐藏了这个bug. 后续要在工作中提高,要做好下面五多: 1.多看,源码实现的原理,特别是一些开源社区贡献的源码.身边牛人的博客.同事的优秀代码: 2.多想,结合身边实际的场景,思考自己如何去实现: 3.多练,这个不多说了.包括,一个问题多种解决思路,一种技术适合解决哪些场景下的问题: 4.多交流,根据自己