Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编译器是否为automatic&;提供了不同的默认构造函数;静态对象?_C++_Default Constructor - Fatal编程技术网

C++ 编译器是否为automatic&;提供了不同的默认构造函数;静态对象?

C++ 编译器是否为automatic&;提供了不同的默认构造函数;静态对象?,c++,default-constructor,C++,Default Constructor,我知道编译器提供的默认构造函数不会初始化类和结构的数据成员。 考虑下面的例子: #include <iostream> struct Test { int a,b; // oops,still uninitialized }; int main() { Test t; // compiler won't initialize a & b std::cout&l

我知道编译器提供的默认构造函数不会初始化类和结构的数据成员。 考虑下面的例子:

#include <iostream>
struct Test
{
     int a,b;                      // oops,still uninitialized
};
int main()
{
      Test t;                      // compiler won't initialize a & b
      std::cout<<t.a<<' ' <<t.b;   // a & b has garbage values
}
#包括
结构测试
{
int a,b;//oops,仍然未初始化
};
int main()
{
测试t;//编译器不会初始化a&b

std::cout具有静态存储持续时间的对象总是在任何其他类型的初始化(cf.[basic.start.init])之前初始化为零。具有自动存储持续时间的对象不是。构造函数与此无关。

正如我所研究的,类提供了默认构造函数(在任何情况下)因此,创建静态对象或普通对象并不重要。只有一个不同之处是,本地变量的值已经被零初始化。

@ Mead:它是对C++标准中描述该行为的部分的引用。
#include <iostream>
struct Test
{
     int a,b;              // both a & b will be 0 initialized              
};
int main()
{
      static Test t;               // static object
      std::cout<<t.a<<' ' <<t.b;   // a & b will always be 0 by default
}