C++不同的变量初始化

C++ different variable initalization

本文关键字:变量 初始化 C++      更新时间:2023-10-16

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

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


那么inta = 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>();

不会调用复制构造函数。

有关初始化的(更多(更多信息,请参见此处。