相关疑难解决方法(0)

964
推荐指数
5
解决办法
11万
查看次数

什么'值初始化'是什么意思?

可能重复:
C++中的以下短语是什么意思:零,默认和值初始化?

如果我有一个班级,例如:

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++语言中的不同含义,但我想知道默认值和值初始化之间的语义差异,例如,值初始化是否意味着将某些内容初始化为零?

c++ default-value value-initialization

18
推荐指数
1
解决办法
8501
查看次数

c ++ 03:std :: map中内置类型的默认构造函数

我一直以为代码如下

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)提供初始化,或者可以安全地省略它.

c++ stdmap c++03

5
推荐指数
1
解决办法
1629
查看次数