我不理解gcc 4.8.1或Visual Studio 2015在默认初始化和值初始化方面的行为。
我自己也在尝试理解这些区别,可能遇到了编译器bug?
我的问题是:有人能够解释这种行为吗?最好能告诉我应该发生什么。
我有两个类:
class Foo{
int _bar;
public:
void printBar(){ cout << _bar << endl; }
};
class bar{
int ent;
public:
int getEnt(){return ent;}
};
我将使用以下代码进行测试:
int main()
{
Foo foo;
foo.printBar();
Foo().printBar();
bar b;
cout << b.getEnt() << endl;
return 0;
}
在gcc和Visual Studio中,我得到以下结果:
现在,如果我将测试代码更改为:134514795
0
0
int main()
{
Foo foo;
foo.printBar();
bar b;
cout << b.getEnt() << endl;
return 0;
}
gcc 给我的结果是:
0
0
而 Visual Studio 给我的结果是:
50790236
51005888