gpt4 book ai didi

c++ - 列表初始化的形式

转载 作者:太空狗 更新时间:2023-10-29 23:25:21 25 4
gpt4 key购买 nike

请看下面的代码:

std::vector<int> v1{1, 2, 3};
std::vector<int> v2 = {1, 2, 3};

我的问题是:

  1. 两者有区别吗?我知道第一个肯定是列表初始化,但是第二个呢?

  2. 因为第二个有一个赋值符号,这让我觉得编译器会首先使用 std::initializer_list 创建一个临时的 vector ,然后它使用复制构造函数将临时 vector 复制到 v2。这是事实吗?

最佳答案

在这种情况下,两个 ( direct-list-initialization vs copy-list-initialization) 完全相同。没有构造临时 std::vector 并且没有调用 std::vector::operator= 。等号是初始化语法的一部分。

如果 std::vector's constructor overload no. 7 会有不同被标记为 explicit,在这种情况下,任何复制初始化都会失败,但这将是标准库设计中的一个缺陷。

关于c++ - 列表初始化的形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38582981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com