可以在程序中多次定义内联或constexpr函数吗?

时间:2019-04-09 23:30:08

标签: c++ constexpr

我正在阅读C ++入门书籍。对于像我这样的初学者,我觉得它非常有趣并且易于理解。但是当我到达这个话题时:

“将内联和constexpr函数放入头文件中” 据说:

  

与其他函数不同,可以在程序中多次定义内联和constexpr函数。毕竟,为了扩展代码,编译器需要定义,而不仅仅是声明。但是,给定的内联或constexpr的所有定义必须完全匹配。结果,通常在标头中定义内联和constexpr函数。

有人可以向我解释一下吗?我觉得有点难以理解。我自己学习。

我猜有一个所谓的“ ODR”一定义规则。但是他对“可以在程序中多次定义内联或constexpr函数”的意思是什么?

如果有人举一个例子来说明,我将非常感激他。谢谢。

1 个答案:

答案 0 :(得分:3)

允许

inlineconstexpr部分违反ODR规则:每个使用该功能的.cpp文件都必须具有该功能的一个完全相同的副本。这样,您就可以在标头中放入小的方法,以便每个.cpp文件都可以看到相同的代码,因此每个cpp文件的副本都是相同的。