首页 > 解决方案 > 为什么将`const`修饰符应用于保存结构值的变量会使结构值不可变?

问题描述

struct S { string s; }

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

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

标签: c++

解决方案


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


推荐阅读