C++构造函数语法和零初始化

shi*_*zou 1 c++ syntax c++11

这是一个关于c ++语法的简短问题:

class arrayInit {
 public:
  bool vars[2];

  arrayInit() : vars() {} //1
};

class array {
 public:
  bool vars[2];
  array() {} //2
};
Run Code Online (Sandbox Code Playgroud)

1和2做什么?

为什么他们不像这样零初始化:bool vars[2]={};

是什么目的arrayInit() :array()?什么叫它所以我可以搜索它?

它来自:https://msujaws.wordpress.com/2010/06/16/initializing-an-array-in-c/

bas*_*hrc 5

1和2做什么?

1和2都定义了相应类型的默认构造函数

为什么他们不像这样零初始化:bool vars [2] = {};?

如果他们使用的是支持c ++ 11的编译器,他们就可以了.另外var()将初始化与vars相同的数组[2] = {}将显式初始化所有元素为false

arrayInit():和array()的目的是什么?什么叫它所以我可以搜索它?

它们被称为默认构造函数.C++编译器将为您创建它们,除非您想要在它们中做一些特殊的事情.如果你提到超出:(冒号)的内容,那个表达式称为初始化列表

在这里阅读更多