首页  >  文章  >  后端开发  >  内联成员函数可以在 .cpp 文件中定义并仍然内联吗?

内联成员函数可以在 .cpp 文件中定义并仍然内联吗?

Patricia Arquette
Patricia Arquette原创
2024-10-26 19:03:02616浏览

Can Inline Member Functions Be Defined in a .cpp File and Still Be Inlined?

.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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn