C ++不同的变量初始化

时间:2019-12-29 20:56:14

标签: c++

那么int a = 10;int a(10);之间的主要区别是什么?是否有一些表演变化或类似的东西?

1 个答案:

答案 0 :(得分:5)

我很确定这是骗子,但是我现在找不到任何东西,所以这里有一个答案:


  

那么int a = 10;int a(10);之间的主要区别是什么?

第一个是复制初始化,第二个是直接初始化。它们都产生一个值为10的int。

  

有一些表演变化或类似的东西吗?

对于像int这样的图元:否。对于类/结构,可能会有。复制初始化将调用类的复制构造函数,这可能会做一些工作。例如std::vector的复制构造函数将复制向量的每个元素,这可能会变得很昂贵

std::vector<int> a{ 1, 2, 3 };
std::vector<int> b = a;

std::cout << a.size() << "/" << b.size(); // will print 3/3

在某些情况下会发生复制删除,所以

std::vector<int> c = std::vector<int>();

调用复制构造函数。

有关初始化的更多信息,请参见here