C++中函数中Const使用的区别

S.F*_*rrd -3 c++

我有以下方法使用多个const关键字.他们为什么用?

const int* MyClass::getvalue(const int input) const
Run Code Online (Sandbox Code Playgroud)

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

Som*_*ude 5

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

参数is const表示函数不能更改参数.它部分是信息性的,部分有助于编译器选择优化,对于引用或指针意味着无法修改引用/指向的任何内容.对于引用,还有可以将临时对象传递给函数的语义.

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