首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++函数输出

C++函数输出
EN

Stack Overflow用户
提问于 2015-12-20 16:24:53
回答 1查看 120关注 0票数 1

我看大学里很少有关于C++的练习,我发现了这个练习:

代码语言:javascript
复制
#include <iostream>
using namespace std;

int x = -2;

int h(int &x) {
    x = 2 * x;
    return x;
}

int g(int f) {
    return x;
}

int &f(int &x) {
    x += ::x; 
    return x;
}

int main() {
    int x = 6;
    f(::x) = h(x);
    cout << f(x) << endl;
    cout << g(x) << endl;
    cout << h(x) << endl;
    return 0;
}

此代码的输出是:

代码语言:javascript
复制
24
12
48

有人能解释一下我怎么得到这个输出吗?

f(::x) = h(x);是如何工作的呢?

EN

回答 1

Stack Overflow用户

发布于 2015-12-20 17:11:25

还记得局部变量隐藏全局变量吗?你在这里所拥有的就是这一原则。

考虑函数

代码语言:javascript
复制
int &f(int &x) {
    x += ::x; 
    return x;
}

在这里,作为参数传递的int &x是函数的本地变量;其中函数中的::x引用全局变量x。

顺便说一句,::被称为范围解析操作符,在C++中也用于许多其他用途。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34383098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档