【问题标题】:What is the difference between int const function(parameters), int function(const parameters), and int function(parameters) const?int const 函数(参数)、int 函数(const 参数)和 int 函数(参数)const 有什么区别?
【发布时间】:2015-02-10 12:57:25
【问题描述】:

我正在为我的 CS 课做一个作业,它使用 const,我对何时使用它们感到有点困惑。

这三个函数有什么区别?

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

提前致谢!

【问题讨论】:

标签: c++ constants


【解决方案1】:

考虑到你在谈论c++

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

将返回一个常量到int

int function(const parameters)

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

int function(parameters) const

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

【讨论】:

    【解决方案2】:
    int const function(parameters)
    

    const 是多余的。将诸如int 之类的简单类型声明为const 返回值是没有用的,尽管它可能有助于使代码更加自文档化。但是,如果返回类型是引用或指针,那么情况就会发生变化。

    int function(const parameters)
    

    传递给functionparametersconst,因此无法修改。

    int function(parameters) const
    

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

    【讨论】:

    • 只是为了扩展第一种情况,Effective C++(第 3 版)建议这样做,以防止意外分配给临时对象。但是,从 C++!1 开始,这种模式会阻止从临时移动(int 不是问题,但可能对于类类型),因此不推荐。
    • 次要的 nitpick:const 成员函数允许您修改可变数据成员,并且不允许您调用非常量成员函数,即使这些不修改任何非可变成员。
    • 如果对象本身是const,那么你将无法通过它调用任何非const和非静态函数。
    猜你喜欢
    • 2011-02-13
    • 2010-09-14
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多