目录
一、this那些事。
- 对象的this指针并不是对象的一部分,不会改变对象的sizeof()。
- 在类的非静态成员函数中返回对象本身时,直接使用return* this。
- 当参数与成员变量同名时,用this->n=n;。
二、inline那些事。
- inline要和函数的定义放在一起,它是定义的关键字,不是声明的关键字。
- inline使程序在编译时将函数的调用替换为整个函数体,省去了函数调用的开销。(开销有参数的压栈、跳转、退栈和返回操作。)
- 函数体太长不宜内联,会占用大量内存。函数体内有循环也不宜内联。如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。
- 虚函数在无多态性时可以内联。
三、sizeof那些事。
空类的大小字节为1。
对于包含虚函数的类,不管有几个虚函数,只有一个虚指针vptr的大小。
一个类中,虚函数本身,成员函数和静态数据成员都不占用类对象的存储空间。
虚继承继承基类的vptr。
普通继承,派生类继承了所有基类的函数与成员。按字节对齐来计算大小。(字节对齐看这篇就够了!)
虚函数继承,不管是单继承还是多继承,都继承基类的vptr。
总结
总结了this、inline和sizeof的一些注意事项。