const引用过的变量是否可以被修改
修改const引用
对于C/C++中的const变量,通常不能直接修改其值。但是有些情况下,可以通过特定方式修改const变量的值:
1.通过casts去除const性质。
例如
1 | cpp |
这种方式编译器可能会发出警告,且破坏了const的语义,不推荐使用。
2.通过指针修改const变量。
例如:
1 | cpp |
这也破坏了const的语义,可能导致undefined behavior,不推荐。
3.如果const变量是类/结构体的成员,可以通过非const指针修改。
例如:
1 | cpp |
这是因为通过指针访问成员时,const性质会被忽略。这也不推荐在设计中出现。
4.如果const变量有可变成员,可以通过该成员修改值。
例如:
1 | cpp |
这种情况下,通过可变成员的修改也会间接破坏const变量的值。所以设计时也需要避免。
总结
除上述几种情况外,const变量的值是不可以被直接修改的。所以在绝大多数情况下,我们可以认为const的值是不可变的。如果出现上述情况破坏const语义,这通常属于代码设计的缺陷,需要在设计时予以避免。
编码
1 | #include <iostream> |
输出效果
1 | func1 |