为什么将const修饰符应用于具有结构值的变量,使结构值不可变?

时间:2020-05-19 23:48:35

标签: c++

struct S { string s; }

void method() 
{
    const S s = { "s" };
    s.s = "l"; // Error
}

我不明白为什么这里会产生编译错误。根据我的理解,构造结构引用变量const应该使变量本身不可变(s = { "m" }初始化后只有s会产生错误),而不是结构本身(因此s.s = "l"应该可以通过)。为什么const会使变量和结构都不可变?

1 个答案:

答案 0 :(得分:3)

它不是“引用结构实例的变量”。没有间接关系。 s的值为struct S,其中包括其所有字段。