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;
    }
};