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

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-28 17:34:30311浏览

 Can I Define Inline Member Functions in a .cpp File and Still Get Inlining?

.cpp 文件中的内联成员函数定义

在 C 中,内联成员函数最好在头文件中定义,以允许编译器在编译期间内联它们。但是,某些情况可能需要将实现放在标头之外,例如类之间的循环依赖关系。

在给定的示例中,类 A 包含类 B,类 B 又包含 A 的前向声明。这样循环往复,B.cpp中定义了B类的getA()函数。这就提出了一个问题:编译器是否仍然内联 getA(),如果是,哪个定义优先?

根据 C FAQ,内联函数的定义必须放在它的头文件中对所有使用它的源文件可见。因此,在这种情况下,编译器不会内联 getA(),除非在 B.cpp 本身内调用。

最佳实践规定 inline 关键字只能在类外部的函数定义中使用一次身体。因此,放置在头文件中的任何内联关键字都是多余的。

不幸的是,没有已知的方法可以在 .cpp 文件中定义内联成员函数,同时仍确保编译器将其内联。

以上是我可以在 .cpp 文件中定义内联成员函数并仍然获得内联吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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