首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >成员函数末尾的const是什么意思?

成员函数末尾的const是什么意思?
EN

Stack Overflow用户
提问于 2010-10-31 01:52:51
回答 2查看 51.2K关注 0票数 81

当C++中的const关键字写在成员函数的末尾(在参数列表之后)时,它到底是什么意思?

EN

回答 2

Stack Overflow用户

发布于 2010-10-31 02:16:45

函数签名末尾的const意味着函数应该假定它是其成员的对象是const。实际上,这意味着您要求编译器检查成员函数是否以任何方式更改对象数据。这意味着要求编译器检查它不会直接更改任何成员数据,也不会调用任何本身不能保证不会更改对象的函数。

在创建const对象时,您要求编译器确保该对象在初始化后不会发生更改。这反过来意味着编译器将检查您没有直接更改其成员数据,并且您没有调用任何不能保证它不会更改对象的函数。

这都是常量正确性哲学的一部分。从本质上讲,这意味着如果现在一切正常,它们不会改变,那么它们就永远不会崩溃。换句话说,恒定的东西更容易可靠地工作。函数签名末尾的const是一个用来防止破坏的工具。这反过来意味着您应该尽可能地将const放在任何地方。

票数 38
EN

Stack Overflow用户

发布于 2010-10-31 02:03:12

编译器优化是可能的,但主要好处是强制执行函数声明中表达的约定-如果将成员函数定义为const,编译器将阻止对该函数中的对象进行任何修改。

您可以在类中的各个字段的声明中使用mutable,使其不受此限制。例如,当您有一个封装了自己的lock_guard的类,即使在const成员函数中也必须更改它的值以强制执行线程安全时,这就很有用。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4059932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档