2

当这个问题出现时,我正在研究 C++ 对象模型。如果调用默认构造函数,类的数据成员的默认值是什么?

例如

class A
{
     int x;
     char* s;
     double d;
     string str;       // very high doubt here as string is a wrapper class
     int y[20];
     public :
     void print_values()
     {
         cout<<x<<' '<<s<<' '<<d<<' '<<str<<' '<y[0]<<' '<<y<<endl;
     }
}

int main()
{
    A temp;
    temp.print_values(); // what does this print?
    return 0;
}
4

2 回答 2

1

当你分配它时,你无法真正预测你的记忆中会出现什么。由于您正在阅读的内存尚未设置为 0(或者我应该说的其他任何内容),因此几乎可以有任何内容。大多数情况下,您会发现小型可执行文件中数值的值为 0。

于 2013-10-01T01:22:30.837 回答
1

未初始化变量的值是未定义的,无论变量位于何处。

未定义不一定意味着零,或任何特定的东西。例如,在许多调试版本中,内存填充有可用于检测无效内存访问的模式。这些被剥离用于发布版本,其中内存只是在找到时留下。

于 2013-10-01T01:27:30.697 回答