c++ - 为什么将`const`修饰符应用于保存结构值的变量会使结构值不可变?
问题描述
struct S { string s; }
void method()
{
const S s = { "s" };
s.s = "l"; // Error
}
我不明白为什么这里会产生编译错误。根据我的理解,制作一个结构引用变量const
应该使变量本身不可变(只有s = { "m" }
在s
初始化之后才会产生错误),而不是结构本身(所以s.s = "l"
应该通过 OK)。为什么 const 使变量和结构都不可变?
解决方案
它不是“引用结构实例的变量”。没有间接性。的值为s
a struct S
,其中包括其所有字段。
推荐阅读
- python-3.x - 即使 nginx 和 uwsgi 启动并运行,Flask web api 也无法正常工作
- gradle - 使用 gradle 中的“apply from”在单独的文件中添加依赖项和插件
- python - Python 从字典中写入 JSON 临时文件
- python - django.core.exceptions.AppRegistryNotReady:应用程序尚未加载。文件初始化
- java - 如何在 JPA 存储库之外定义存储过程
- asp.net - 在 ApplicationUser Identity 中添加属性时出错
- c# - 在 OleDbConnection 中打开时出现异常
- sql-server - 拆分值并传递给存储过程的问题
- php - 如何在 PHP 中删除 EXIF(图像文件)数据?
- c++ - 是否可以将 exe 文件作为 lib 文件链接到另一个项目?