如果'Test'是一个普通的类,那么之间有什么区别:
Test* test = new Test;
Run Code Online (Sandbox Code Playgroud)
和
Test* test = new Test();
Run Code Online (Sandbox Code Playgroud) 如果我有一个班级,例如:
class Info
{
int x;
int y;
};
Run Code Online (Sandbox Code Playgroud)
我曾经创建过一个对象,
Info *p = new Info();
Run Code Online (Sandbox Code Playgroud)
Info旁边的括号是否意味着我正在初始化它?它与此Info *p = new Info;有何不同?
我知道有一个问题可以区分新旧C++语言中的不同含义,但我想知道默认值和值初始化之间的语义差异,例如,值初始化是否意味着将某些内容初始化为零?
我一直以为代码如下
std::map<int, int> test;
std::cout << test[0] << std::endl;
Run Code Online (Sandbox Code Playgroud)
会打印随机值,因为它会在map中创建单位化值.但是,事实证明,创建的int实际上总是初始化为零,并且标准内置类型在某些情况下也是零初始化的.
问题是:当对标准类型(int/char/float/double/size_t)执行零初始化时?我很确定,如果我int i;在不知名的地方宣布,它将包含随机数据.
PS问题是关于C++ 03标准.问题的原因是,现在我不再确定何时必须为内置类型(如int/float/size_t)提供初始化,或者可以安全地省略它.