那么int a = 10;
和int a(10);
之间的主要区别是什么?是否有一些表演变化或类似的东西?
答案 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。