c++ - c++函数中Const用法的区别
问题描述
我有以下带有多个 const 关键字的方法。为什么使用它们?
const int* MyClass::getvalue(const int input) const
如果从方法返回指针,有什么方法可以限制用户更改指针值和指针本身?
解决方案
首先,具有值的返回类型(与引用或指针相反)const
是相当无用的。无论如何,函数的调用者仍然可以将值复制到非常量变量。对于引用或指针,这意味着不能修改引用/指向的对象。不过,它仍然可以复制到非常量对象。
参数是const
意味着函数不能改变参数。它部分提供信息,部分帮助编译器选择优化,并且对于引用或指针意味着任何被引用/指向的内容都不能被修改。对于引用,还有可以将临时对象传递给函数的语义。
最后一个const
是函数本身,它使函数只能在const
对象上调用。如果您有一个非常量MyClass
对象,则无法在其上调用此函数。这const
是函数签名的一部分,以及函数名称及其参数类型。这意味着您可以拥有两个具有相同名称和参数的重载函数,一个是const
合格的,一个不是。
推荐阅读
- xmpp - 连接 XMPP 时检查重复的 JID
- jenkins - jenkins 函数中的 Steps,domain, config -> 是什么意思?
- chrome-extension-manifest-v3 - 如何在 chrome 扩展 mv3 上获取网络请求错误的详细信息
- sql - 嵌套 SQL MS Access 的参数输入
- dart - 使用 dart ffi 类型安全内存分配
- javascript - IdP 端的 Firebase SAML 集成服务器错误
- ssl - 带有 HSTS 的 Certbot 导致握手失败?
- python - Python:Pandas read_excel 无法打开 .xls 文件,ValueError:文件不是可识别的 excel 文件
- php - 在不使用键的情况下更改 PHP 数组的值
- python - 运行几分钟后,无法在 selenium python 中运行此 url,显示“aw,snap”