C ++内联函数,参数按值传递

ima*_*man 0 c++ inline pass-by-value

很好,我上次检查内联函数是一个函数,该函数的主体在调用该函数的程序的每个点中都直接替换。所以当我这样做时:

#include <iostream>
inline void increment(int n) { n = n + 1; }`
int main() { 
   int n = 0;
   increment(n);
   std::cout << "Result " << n;
}
Run Code Online (Sandbox Code Playgroud)

我应该有:结果1。相反,我得到0。

那么内联函数如何工作?

tad*_*man 5

这不是内联问题,而是方法签名错误:

inline void increment(int& n) {
  ++n;
}
Run Code Online (Sandbox Code Playgroud)

你要一份副本,你会得到一份。而是要求参考。不要将内联函数混淆,它们是不一样的。事实上,声明inline通常会适得其反,因为编译器会根据您的优化设置为您调用。


raf*_*eek 5

'inline'不会像宏一样用函数体替换文本。它用等效生成的代码替换了函数调用,因此功能上与非内联函数没有区别。