与我的预期相比,我的 C++ 代码输出不同,我希望了解它是如何执行的
#include <iostream>
#include <string>
int x = 8;
class A {
public:
A() {
int x = 5 ;
}
void print (int x = 4) {
std::cout << "the scope variable"<< ::x << "passed variable" << x;
}
};
int main() {
A a;
a.print(7);
}
我预计是5和7,但结果是8和7
如果您期望输出 5 和 7,那么构造函数必须处理全局变量而不是局部变量。
那是代替
A(){int x = 5 ;}
你应该写
A(){ x = 5 ;}
or
A(){ ::x = 5 ;}
考虑到声明变量会更好x
作为类的静态数据成员A
.
例如
class A {
public :
//...
private:
static int x;
};
//...
int A::x = 0;
在这种情况下,只有该类的对象可以访问该变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)