内联函数解决多定义是一个定义明确的事情吗?

Hum*_*awi 3 c++ inline c++11

我正在构建一个模板化的标头C++ 11库.正如我所读到的,我应该定义我的成员函数,inline以保证不会发生翻译单元中多重定义的定义.

这是inline关键字的明确定义吗?我曾经认为这inline是与性能相关的事情.我怀疑通过使用inline就像打开一个后门一样.使用它的任何缺点?还有其他方法吗?

Som*_*ude 7

如果您阅读inline参考文献,您将看到具有外部链接的函数的属性列表,第二点说:

它在每个翻译单元中具有相同的地址.

这意味着声明一个函数inline将导致所有翻译单元中只存在该函数的一个实例(即从源文件生成的所有目标文件).

由于只存在一个函数实例,因此不会出现任何多重定义错误.

  • @VioletGiraffe总是有函数的实际定义,它将始终生成.然后*if*编译器决定实际内联函数,它创建一个*copy*inline.但是非内联定义仍将存在. (4认同)