SF
混沌之核
混沌之核
注册登录
关注博客
注册登录
主页
关于
RSS
[C++对象模型]继承内存开销分析
Azathoth
2015-08-26
阅读 2 分钟
2.5k
X为空类,由编译器生成一个char,故大小为1Y继承空虚基类,内含vptr.Y,故大小为4(此处有编译器优化,可以参考《深入理解C++对象模型》)Z与Y相同,故长度为4A继承虚基类Y,内含vptr.A和vptr.Y,故大小为4+4=8B继承基类Y、Z,内含Y和Z,故大小为4+4=8C继承虚基类Y、Z,内含vptr.C、vptr.Y和vptr.Z,故大小为4+4+4=12D继...
[EMC++] Item 10. Prefer scoped enums to unscoped enums
Azathoth
2015-08-22
阅读 1 分钟
2.1k
条款十 倾向使用范围enum 简介 一般来说,在大括号内定声明的名字只在括号内可见,但是C++98的枚举是个例外,名字属于包含enum关键字的作用域。 {代码...} C++14的enum则改变了这种情况: {代码...} 由于范围内的枚举使用enum class,所以有时也被称作枚举类。 此外,范围enum是强类型的,非范围enum则会隐式转换为整型...
[EMC++] Item 9. Prefer alias declarations to typedefs
Azathoth
2015-08-22
阅读 2 分钟
2.1k
条款九 倾向使用别名声明而非typedef 简介 在C++98中可以使用typedef简化定义: {代码...} 在C++11中提供了别名声明(alias declarations)的方式: {代码...} 这两种方式实现了相同的功能,但是在处理函数指针的时候后者更容易被理解。 {代码...} 倾向使用别说声明的强烈原因是,别名声明可以模板化,而typedef不行 案例 ...
[EMC++] Item 8. Prefer nullptr to 0 and NULL
Azathoth
2015-08-22
阅读 2 分钟
2k
条款八 倾向使用nullptr而非0和NULL 简介 在C++中的字面量0是一个int,当C++在一个只可以使用指针的情景中找到0,它勉强地把其解释为null指针。 对于NULL也有类似的问题,具体实现允许给NULL一个整型(不一定是int,也可以是long等)。 但是最大的问题是0与NULL都不是指针类型 在C++98中,主要的问题是在指针和整形的重...