为什么需要在多个地方声明一个函数?

Jas*_*123 2 c++ declaration

我正在阅读 Bruce Eckel 的《Thinking in C++》第 2 版,第 82 页,其中写道:“您可以在许多不同的地方声明一个变量或函数,但在 C 和 C++ 中必须只有一个定义(有时称为ODR:单一定义规则)。”

什么情况下可以从多次声明中受益?您是否需要这样做,或者只是为了使代码更具可读性?

谢谢。

AnT*_*AnT 5

当您将带有函数声明的头文件包含到多个翻译单元中时,“在多个位置声明函数”正是您所做的。这基本上是 C++(和 C)编程中必不可少的日常实践。

无论您是否为此目的使用头文件,函数在首次使用之前都必须在使用该函数的每个翻译单元中进行声明。由于 C++ 程序通常包含多个翻译单元,因此您别无选择,只能在多个位置声明相同的函数。

您还可以在同一翻译单元中多次声明同一独立(非成员)函数。这样做并没有错误。但大多数时候这确实是多余的。