.cpp 文件中的 C 内联成员函数:困境和解决方案
在 C 中,内联成员函数通常在头文件中声明效率原因。但是,某些情况下可能需要在 .cpp 文件中实现该函数。让我们深入研究这样的情况:
考虑以下具有循环依赖的场景:
A.h
<code class="cpp">#pragma once #include "B.h" class A { B b; };</code>
B.h
<code class="cpp">#pragma once class A; class B { inline A getA(); };</code>
要打破循环依赖,需要将 getA 的实现放在 B.cpp:
B.cpp
<code class="cpp">#include "B.h" #include "A.h" inline A B::getA() { return A(); }</code>
困境
inline 关键字在头文件和 .cpp 文件中的放置会影响函数的内联吗?
解决方案
不幸的是,尽管 .cpp 文件中有 inline 关键字,编译器不会内联 getA,除非它在 B.cpp 本身中使用。这是因为编译器在遇到内联函数时都需要定义它。通常,将函数放在头文件中可以确保这种可用性。
最佳实践
根据 C FAQ,必须在头文件中定义内联函数。将它们放在 .cpp 文件中可能会导致无法解决的外部错误。
替代解决方案
所提供的方案并不建议将内联函数放在 .cpp 文件中的替代解决方案。 cpp 文件。
以上是内联成员函数可以在 .cpp 文件中定义并仍然内联吗?的详细内容。更多信息请关注PHP中文网其他相关文章!