Nik*_*iya 16 c++ constructor destructor inline
我记得在其中一本C++书籍(很久以前)中读到,内联构造函数和析构函数尤其适用于派生类并不是一个好主意.我理解内联会导致一些膨胀的目标代码,但有没有其他设计考虑因素阻碍内联构造函数和析构函数?当然,大多数编译器可能会拒绝内联并继续创建一个函数体,但如果他们要内联可能需要支付的惩罚?
joh*_*ohn 36
编译器可以自由内联您未声明内联的代码,并且可以自由地不内联您声明的内联代码.我见过编译器会做这两件事.因此,内联关键字并不意味着大多数人认为它的作用.它的意思是允许对一个定义规则的异常,因此您可以将函数等放在头文件中而不会出现链接器错误.
所以建议是垃圾,让编译器决定什么是最好的内联和什么不是.将内联放在需要它的地方以防止链接器错误,就是这样.
除了@oli 在他的回答中提到的原因:
这本书可能会指导不要内联构造函数和析构函数,因为即使看似微不足道或空的函数也可能经常包含大量由编译器隐式生成的代码,而实际的函数定义最终可能会非常大,这可能会导致代码膨胀。
话虽如此,让编译器实际决定是否内联函数调用(甚至是构造函数和析构函数)是明智的,大多数现代编译器都会通过内联适当地优化函数。
| 归档时间: |
|
| 查看次数: |
13691 次 |
| 最近记录: |