在 C++ 中内联所有方法,没有 Cpp 文件?

Inline all methods in C++, No Cpp file?

我想用 C++ 编写一个具有最佳运行时性能的应用程序。所以我决定内联所有方法。

我有提到的问题 here

如果我在 MSVC 2015 和 MinGW 编译器中的 cpp 文件中使用 inline 关键字,它会给我未定义的引用错误。

但是如果我想在头文件中内联所有方法,就不需要cpp文件了。真的吗?这是为什么?

不,这不是真的。根据定义,您的主要功能不能内联。 See this link for more information.

关键字inline与当今时代的性能无关,与内联函数无关!

事实上它与单一定义规则(或 ODR)有关!

ODR 指出 C++ 程序的每个函数只能有一个定义。

这意味着以下将产生错误:

file.cpp

void fun() {}

main.cpp

void fun() {}

这是一个错误,因为在两个不同的翻译单元(.cpp 文件)中存在同一个函数的两个定义,这违反了 ODR。

现在 inline 关键字可以让您绕过这个问题。它允许你在多个翻译单元中定义同一个函数,只要函数体完全一样即可!这允许您在头文件中定义函数,然后可以将其包含到多个 .cpp 文件中。

话虽这么说。您描述的内容 不会 导致性能下降。编译器会在适当的时候内联正确的函数。它将使您的代码 运行 比您自己编写的速度更快。