在C/C++中,为什么全局变量和静态变量初始化为默认值?
为什么不留下垃圾值呢?这有什么特别的原因吗?
我有一个数组成员的类,我想初始化为全零.
class X
{
private:
int m_array[10];
};
Run Code Online (Sandbox Code Playgroud)
对于局部变量,有一种简单的零初始化方法(参见此处):
int myArray[10] = {};
Run Code Online (Sandbox Code Playgroud)
此外,类成员m_array显然需要初始化,因为默认初始化整数会见好就收随机的垃圾,如解释在这里.
但是,我可以看到两种方法为成员数组执行此操作:
括号:
public:
X()
: m_array()
{}
Run Code Online (Sandbox Code Playgroud)
带括号:
public:
X()
: m_array{}
{}
Run Code Online (Sandbox Code Playgroud)
两个都正确吗?这两者在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/