【发布时间】:2014-11-17 17:52:34
【问题描述】:
上次我检查了一个内联函数是一个函数,它的主体被直接替换在程序中调用该函数的每个点中。 所以当我这样做时:
#include <iostream>
inline void increment(int n) { n = n + 1; }`
int main() {
int n = 0;
increment(n);
std::cout << "Result " << n;
}
我应该有:结果 1。 相反,我得到 0。
那么内联函数是如何工作的呢?
【问题讨论】:
-
一个函数无论是否内联,其逻辑行为都是相同的。
-
通过引用传递。您增加参数的副本,并且在执行离开您的函数后副本消失。
-
我知道我正在使用副本。我是故意的。我想看看我是否使用了内联函数,调用将直接替换为 n = n + 1。
-
@iman:会的,但是对于名为
n的不同变量,而不是main中的变量。内联函数的行为与非内联函数完全相同。
标签: c++ inline pass-by-value