C++类成员函数在.cpp中设置成inline后无法解析的问题

时间:2021-02-04 20:21:45

内联函数:告知编译器在进行有内联标识的函数调用时将函数体部分在调用处展开。这样做可以消除函数传参(堆栈调用)的负担,提高了函数的调用效率。

而且inlining的函数并不存在,因为已经被展开了。


如果需要定义一个内联函数,需要在函数体定义的地方使用inline关键字标识,写在函数声明处是没有意义的。

int func(int);  //函数声明


inline int func(int a) //函数定义
{
return ++a;
}



int main()
{
std::cout << func(1) << endl; //函数调用
return 0;
}

会被展开成
int main()
{
std::cout << ++1 << endl;
return 0;
}

消除了参数a的传递过程带来的效率问题。


1.在C++类的实现过程中,如果想要将成员函数设置成inline内联函数的话,需要在类的头文件.h中定义这个函数,不能在相应的.cpp文件中定义。

2.在类内部定义的成员函数默认设置成内联函数。

3.inline内联关键字只是给编译器一个建议,有些函数即使有inline标识,也不会被设置成内联函数。

4.有些函数即使没有inline标识,编译器在优化时也有可能将这个函数作为内联函数来处理。