int const function(parameters)、int function(const parameters)和int function(parameters) const有什么区别?

4

我正在为我的计算机科学课程做一项任务,它使用const,但我有点困惑应该在什么情况下使用每个。

这3个函数之间有什么区别?

 int const function(parameters)
 int function(const parameters)
 int function(parameters) const

提前感谢您!


请参见https://dev59.com/3mQn5IYBdhLWcg3w7a2K。 - juanchopanza
2个回答

4
int const function(parameters)

const是多余的。声明一个简单类型,如int作为const返回值并没有什么用处,尽管这样做可以使代码更加易懂。但如果返回类型是引用或指针,则情况就有所不同。

int function(const parameters)

function接收的parametersconst类型的,因此不能被修改。

int function(parameters) const

function是一种方法,它不会修改调用它的对象实例中的任何成员变量。


2
仅就第一个案例进行扩展,Effective C++(第三版)推荐这样做,以防止意外地赋值给临时对象。然而,由于C ++ 11,此模式会阻止从临时对象移动(对于int没有问题,但对于类类型可能有问题),因此不建议使用。 - BoBTFish
3
小小的一点建议:const成员函数允许您修改可变数据成员,但不允许您调用非const成员函数,即使这些函数不修改任何非可变成员。 - juanchopanza
如果对象本身是const,则无法通过它调用任何非const和非静态函数。 - user3528438

2

考虑到你在谈论:

const int function(parameters) // instead of your  int const function(parameters)

将返回一个常量到int

int function(const parameters)

这些参数在方法内将被视为常量,这意味着它们不会被更改。

int function(parameters) const

如果成员不可变,这个函数不会改变任何类变量


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接