C++ Visual Studio 2013 C++;类属性初始化问题
谁能给我解释一下这个代码是怎么回事吗C++ Visual Studio 2013 C++;类属性初始化问题,c++,visual-studio-2010,class,constructor,visual-studio-2013,C++,Visual Studio 2010,Class,Constructor,Visual Studio 2013,谁能给我解释一下这个代码是怎么回事吗 class Point { private: int x; int y; public: Point(){} void print(){ cout << x << " " << y << endl; } }; int main() { Point p; p.print(); return 0; } 类点 { 私人: in
class Point
{
private:
int x;
int y;
public:
Point(){}
void print(){
cout << x << " " << y << endl;
}
};
int main()
{
Point p;
p.print();
return 0;
}
类点
{
私人:
int x;
int-y;
公众:
点(){}
作废打印(){
如果类成员从未初始化为零,则需要在构造函数中自己进行初始化
class Point
{
private:
int x;
int y;
public:
Point():x(0), y(0) {}
void print(){
cout << x << " " << y << endl;
}
};
类点
{
私人:
int x;
int-y;
公众:
点():x(0),y(0){}
作废打印(){
cout当您打印这些int
s和int*
时,您打印的是分配这些数据之前内存中的垃圾数据。请注意,您打印的是buf
持有的地址,而不是指向它的值。打印*buf
可能会给您一个错误
-二进制的858993460是:11001100
这可能是VisualStudio2010中调试器的默认内存位置,以警告您正在读取错误数据
至于2010年和2013年之间的差异,可能是您不再在调试中运行,或者2013年的默认调试块写入仅为0。问题是重复的,我知道构造函数是用来初始化类成员的。我不认为这是巧合。我很确定这是有解释的他的怪异行为,C++规范说明它们将持有不确定的值,所以在任何情况下,都是不正确初始化的糟糕编程风格。
class Point
{
private:
int x;
int y;
public:
Point():x(0), y(0) {}
void print(){
cout << x << " " << y << endl;
}
};