C++全局对象

来源:百度知道 编辑:UC知道 时间:2024/05/27 13:12:26
#include <iostream>
using namespace std;
class CPoint
{
public:
CPoint(int a)
{
a=a;
}
int a;
};
CPoint A(1);
int main()
{
cout<<A.a<<endl;
return 0;

}
结果是:0
为什么不是1呢?

根本问题是出在
CPoint(int a) //形参名和类成员名相同。
{
a=a; //编译器在这里其实是把形参a的值赋值给自己了。
}
所以构造函数里要是改成:this->a = a;显示的定义了左值是类成员a能达到目的。
但是一个良好的编程习惯是不要让类成员或者成员函数和其他变量名什么的重名。
CPoint(int b)
{
a=b;
}
这样也能达到目的。

a隐藏了this->a.
所以构造函数里要是:this->a = a;

楼上分析对的你2种多是啊
this->a = a;

CPoint(int b)
{
a=b;
}
哈哈