C++ 在c+中影响一个函数到另一个函数+;
这是我试图理解的代码:C++ 在c+中影响一个函数到另一个函数+;,c++,C++,这是我试图理解的代码: #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); cou
#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;
}
我理解范围解析运算符(::)的功能,即使用全局intx
,但我不理解的部分是这一部分:f(::x)=h(x)代码>和这个:intg(intf){returnx;}
因此,我试图理解的是,当这些指令被执行时,一步一步地发生了什么
f(::x) = h(x);
int g(int f) { return x; }
相当于
operator=(f(::x), h(x));
首先,调用一个函数f
或h
,并将返回值传递给操作符=
。然后调用另一个函数,并将返回的值传递给操作符=
。顺序是不相关的,因为在这两种情况下,f
将全局x
的值更改为-4
并返回对它的引用,h
将本地x
(本地在主
中)更改为12并返回其值。然后将值12分配给全局x
线路
f(::x) = h(x);
int g(int f) { return x; }
定义一个函数,该函数返回全局x
的值
可能使用不同的变量名有助于理解:
#include <iostream>
using namespace std;
int globalX = -2;
int h(int &hX) {
hX = 2 * hX;
return hX;
}
int g(int f) { return globalX; } // f is unused
int &f(int &fX) {
fX += ::globalX;
return fX;
}
int main() {
int mainX = 6;
f(::globalX) = h(mainX);
cout << f(mainX) << endl;
cout << g(mainX) << endl;
cout << h(mainX) << endl;
return 0;
}
#包括
使用名称空间std;
int globalX=-2;
内部h(内部和hX){
hX=2*hX;
返回hX;
}
int g(int f){return globalX;}//f未使用
内部和外部(内部和外部){
fX+=:globalX;
外汇收益;
}
int main(){
int mainX=6;
f(::globalX)=h(mainX);
C++代码的版本是什么?我相信规则已经改变了(特别是在代码< f(::x)= h(x))中,调用< <代码> f(::x)< /> >和<代码> h(x)< /> >,将<代码> h(x)< /> >的返回值分配给<代码> f(::x)的返回值。
。函数调用的顺序是不相关的,因为在main
x
和:x
中是两个不同的变量,在f
x
中是对:x
int g(int f){return x;}的引用
很容易理解,它返回全局x
变量的值。不太清楚不理解从哪里开始,int&f(int&x)
获取一个引用并返回一个引用,你知道这意味着什么吗?我明白这是一个有趣的“谜题”但现在正是推荐调试器并一步一步地实际观察程序执行情况的最佳时机。