发新帖我要提问
12
返回列表
打印
[经验分享]

const修饰时,对象是否可变

[复制链接]
楼主: elsaflower
手机看帖
扫描二维码
随时随地手机跟帖
21
robertesth| | 2024-3-24 16:22 | 只看该作者 回帖奖励 |倒序浏览
const关键字用于修饰变量、对象和函数等。当const修饰一个对象时,它表示该对象的值是不可变的。这意味着在对象的生命周期内,它的值不能被修改。

使用特权

评论回复
22
fengm| | 2024-3-27 13:41 | 只看该作者
const修饰指针本身(指针常量)时,指针的值(地址)不能更改,但可以改变其所指向的内存区域的内容(前提是该内存区域未被其它const限定)。

使用特权

评论回复
23
tabmone| | 2024-3-27 14:57 | 只看该作者
const关键字是为了确保程序的某些部分被视为不可变的,这对于数据保护、减少潜在错误以及提升编译器优化能力都有重要意义。

使用特权

评论回复
24
jonas222| | 2024-3-27 15:20 | 只看该作者
如果是const修饰指针指向的内容,如const MyClass* ptr;,那么通过这个指针不能修改所指向对象的任何成员变量,但可以改变指针本身的值,即可以指向另一个对象。

使用特权

评论回复
25
mnynt121| | 2024-3-27 15:53 | 只看该作者
*p的值仍然是可变的,可以通过修改x的值来改变*p的值。如果要使指针指向的对象也不可变,可以使用const修饰符

使用特权

评论回复
26
uptown| | 2024-3-27 17:54 | 只看该作者
对于const类对象,你不能改变它的任何成员变量。这是因为const本身就表示该对象是不可改变的,即它的内部状态不应该被修改。

使用特权

评论回复
27
cemaj| | 2024-3-27 19:22 | 只看该作者
const修饰指针所指向的数据(内容常量)时,指针可以更改指向其他的内存地址,但不能通过该指针修改所指向内存区域的内容。

使用特权

评论回复
28
hudi008| | 2024-3-27 21:44 | 只看该作者
const修饰符只能保证对象的值在程序运行期间不被修改,而不能保证对象本身是不可变的。例如,如果使用const修饰一个指针,那么指针本身的值(即指向的地址)不能被修改,但指针指向的对象的值仍然是可变的。

使用特权

评论回复
29
mollylawrence| | 2024-4-4 20:45 | 只看该作者
const 的作用取决于它如何被应用。对于对象,如果对象本身被声明为 const,则对象的所有成员都不能被修改。但如果只是对象的某个成员被声明为 const,则只有那个特定的成员不能被修改。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则