代码之家  ›  专栏  ›  技术社区  ›  Ashutosh Tiwari

C++初始化后的数组赋值

  •  0
  • Ashutosh Tiwari  · 技术社区  · 6 年前

    我在读斯特鲁斯图普的《TCPPPL》。在“数组”主题中,我发现了:

    char v4[3]={'a', 'b', 0};
    

    然后它提到“没有数组分配来匹配初始化”,即下面给出了一个错误:

    void f()
    {
    v4={'c','d',0}; //error: no array assignment
    }
    

    作者在这里是什么意思?他是说,初始化数组后,不能重新分配它吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   eerorika    6 年前

    作者在这里是什么意思?他是说,初始化数组后,不能重新分配它吗?

    是的,没错。但是,不能分配数组 之前 初始化它,因此应该简化为: “不能分配数组 “。

        2
  •  4
  •   NathanOliver    6 年前

    他是说,初始化数组后,不能重新分配它吗?

    对。不能更改数组包含的“数组”。可以更改数组中每个元素的值,但不能将数组分配给另一个数组。

    int a[] = {1,2,3};
    int b[] = {4,5,6};
    b = a; // this is also illegal
    

    这是使用标准容器的原因之一 std::string , std::array std::vector . 它们是可分配的和可复制的(和可移动的)。