C++那些事学习记录(3):this、inline和sizeof

本文详细介绍了C++中的this指针,说明它不是对象的一部分,不改变对象的sizeof(),在非静态成员函数中的使用。接着讨论了inline函数,解释了其作用是减少函数调用开销,但不适合于函数体过大或含有循环的情况。最后探讨了sizeof运算符,包括空类的大小、虚函数对sizeof的影响以及继承与字节对齐的原则。
摘要由CSDN通过智能技术生成

目录

一、this那些事。

二、inline那些事。

三、sizeof那些事。

总结

一、this那些事。

  1. 对象的this指针并不是对象的一部分,不会改变对象的sizeof()。
  2. 在类的非静态成员函数中返回对象本身时,直接使用return* this。
  3. 当参数与成员变量同名时,用this->n=n;。

二、inline那些事。

  1. inline要和函数的定义放在一起,它是定义的关键字,不是声明的关键字。
  2. inline使程序在编译时将函数的调用替换为整个函数体,省去了函数调用的开销。(开销有参数的压栈、跳转、退栈和返回操作。)
  3. 函数体太长不宜内联,会占用大量内存。函数体内有循环也不宜内联。如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。
  4. 虚函数在无多态性时可以内联。

三、sizeof那些事。

空类的大小字节为1。

对于包含虚函数的类,不管有几个虚函数,只有一个虚指针vptr的大小。

一个类中,虚函数本身,成员函数和静态数据成员都不占用类对象的存储空间。

虚继承继承基类的vptr。

普通继承,派生类继承了所有基类的函数与成员。按字节对齐来计算大小。(字节对齐看这篇就够了!)

虚函数继承,不管是单继承还是多继承,都继承基类的vptr。


总结

总结了this、inline和sizeof的一些注意事项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值