这个问题在这里已有答案:
我正在阅读C ++ Primer书。对于像我这样的初学者,我发现它真的很有趣,也很容易理解。但是当我达到这个主题时:
“在头文件中放置内联和constexpr函数”,据说:
与其他函数不同,可以在程序中多次定义内联函数和constexpr函数。毕竟,编译器需要定义,而不仅仅是声明,以扩展代码。但是,给定内联或constexpr的所有定义必须完全匹配。因此,内联和constexpr函数通常在头文件中定义。
有人可以向我解释一下。我觉得有点难以理解。我正在自学。
正如我猜的那样,有一种叫做“ODR”的单定义规则。但是他的意思是“内联或constexpr功能可以在程序中多次定义”?
如果有人用一个例子来解释我会非常感激他。谢谢。
允许inline
和constexpr
部分违反ODR规则:使用该函数的每个.cpp文件必须具有完全相同的函数副本。这允许您将小方法放在标头中,以便每个.cpp文件看到相同的代码,因此每个cpp文件的副本都是相同的。