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。
那么内联函数如何工作?
这不是内联问题,而是方法签名错误:
inline void increment(int& n) {
++n;
}
Run Code Online (Sandbox Code Playgroud)
你要一份副本,你会得到一份。而是要求参考。不要将内联函数与宏混淆,它们是不一样的。事实上,声明inline通常会适得其反,因为编译器会根据您的优化设置为您调用。