首页 > 解决方案 > c++函数中Const用法的区别

问题描述

我有以下带有多个 const 关键字的方法。为什么使用它们?

const int* MyClass::getvalue(const int input) const

如果从方法返回指针,有什么方法可以限制用户更改指针值和指针本身?

标签: c++

解决方案


首先,具有值的返回类型(与引用或指针相反)const是相当无用的。无论如何,函数的调用者仍然可以将值复制到非常量变量。对于引用或指针,这意味着不能修改引用/指向的对象。不过,它仍然可以复制到非常量对象。

参数是const意味着函数不能改变参数。它部分提供信息,部分帮助编译器选择优化,并且对于引用或指针意味着任何被引用/指向的内容都不能被修改。对于引用,还有可以将临时对象传递给函数的语义。

最后一个const是函数本身,它使函数只能在const对象上调用。如果您有一个非常量MyClass对象,则无法在其上调用此函数。这const是函数签名的一部分,以及函数名称及其参数类型。这意味着您可以拥有两个具有相同名称和参数的重载函数,一个是const合格的,一个不是。


推荐阅读