[经验分享] const修饰时,对象是否可变

[复制链接]
3191|28
robertesth 发表于 2024-3-24 16:22 | 显示全部楼层
const关键字用于修饰变量、对象和函数等。当const修饰一个对象时,它表示该对象的值是不可变的。这意味着在对象的生命周期内,它的值不能被修改。
fengm 发表于 2024-3-27 13:41 | 显示全部楼层
const修饰指针本身(指针常量)时,指针的值(地址)不能更改,但可以改变其所指向的内存区域的内容(前提是该内存区域未被其它const限定)。
tabmone 发表于 2024-3-27 14:57 | 显示全部楼层
const关键字是为了确保程序的某些部分被视为不可变的,这对于数据保护、减少潜在错误以及提升编译器优化能力都有重要意义。
jonas222 发表于 2024-3-27 15:20 | 显示全部楼层
如果是const修饰指针指向的内容,如const MyClass* ptr;,那么通过这个指针不能修改所指向对象的任何成员变量,但可以改变指针本身的值,即可以指向另一个对象。
mnynt121 发表于 2024-3-27 15:53 | 显示全部楼层
*p的值仍然是可变的,可以通过修改x的值来改变*p的值。如果要使指针指向的对象也不可变,可以使用const修饰符
uptown 发表于 2024-3-27 17:54 | 显示全部楼层
对于const类对象,你不能改变它的任何成员变量。这是因为const本身就表示该对象是不可改变的,即它的内部状态不应该被修改。
cemaj 发表于 2024-3-27 19:22 | 显示全部楼层
const修饰指针所指向的数据(内容常量)时,指针可以更改指向其他的内存地址,但不能通过该指针修改所指向内存区域的内容。
hudi008 发表于 2024-3-27 21:44 | 显示全部楼层
const修饰符只能保证对象的值在程序运行期间不被修改,而不能保证对象本身是不可变的。例如,如果使用const修饰一个指针,那么指针本身的值(即指向的地址)不能被修改,但指针指向的对象的值仍然是可变的。
mollylawrence 发表于 2024-4-4 20:45 | 显示全部楼层
const 的作用取决于它如何被应用。对于对象,如果对象本身被声明为 const,则对象的所有成员都不能被修改。但如果只是对象的某个成员被声明为 const,则只有那个特定的成员不能被修改。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部