gpt4 book ai didi

c++ - 为什么我不能在另一个文件中定义内联成员函数?

转载 作者:可可西里 更新时间:2023-11-01 15:40:16 26 4
gpt4 key购买 nike

我有三个文件:

1. Joy.h

class Joy
{
public:
void test();
};

2.欢乐.cpp

#include "Joy.h"
inline void Joy::test() {}

3. main.cpp

#include "Joy.h"    
int main()
{
Joy r;
r.test();
return 0;
}

我尝试使用以下方法编译它们:

g++ cpp Joy.cpp

g++ 说:

main.cpp:(.text+0x10): undefined reference to `Joy::test()'

谁能告诉我为什么...

如果我不想在 .h 文件中定义那个 test() 函数并且仍然希望它是一个 inline函数?

最佳答案

当你定义一个内联成员函数时,你应该在成员函数的定义前加上关键字inline,并将定义放入一个头文件中。

基本上,当您声明一个内联函数时,您是在告诉编译器(如果可能)在调用函数的任何地方用函数的内容替换调用函数的代码。这个想法是函数体可能很小,调用函数比函数体本身的开销更大。

为了能够做到这一点,编译器需要在编译调用函数的代码时查看定义,这实质上意味着定义必须位于头文件中,因为调用函数的代码只能访问头文件.

好读:
<强> [9.7] How do you tell the compiler to make a member function inline?

关于c++ - 为什么我不能在另一个文件中定义内联成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9648671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com