【问题标题】:Why the use of const in a method with no parameters? [duplicate]为什么在没有参数的方法中使用 const? [复制]
【发布时间】:2014-05-18 08:27:59
【问题描述】:

为什么在这种情况下“const”的目的是?

std::string List::reqClubName() const
{
    return m_Club;
}

谢谢

【问题讨论】:

  • 不完全是,我使用的方法没有使用任何参数()
  • 所以 const 在我的例子中是为了确保该方法不会修改任何东西。我说的对吗?
  • @user2984887 确实如此。它们不能更改变量的任何成员,除非它们被声明为可变的。

标签: c++ methods constants


【解决方案1】:

禁止修改成员并不是将成员函数限定为const 的唯一原因。无论您是否要修改成员,如果成员函数标记为const,您可以通过const 上下文调用对象上的成员函数:

#include <iostream>
#include <string>

struct List
{
   std::string reqClubName()
   {
      return m_Club;
   }

private:
   std::string m_Club;
};

int main()
{
   const List l;
   std::cout << l.reqClubName();
   // ^ illegal: `l` is `const` but, `List::reqClubName` is not
}

语言和编译器都不关心reqClubName 不会尝试修改对象;您的程序将无法编译。

因此,const 后缀应该是您的默认方法,除非您确实需要修改数据成员。

【讨论】:

    【解决方案2】:

    成员函数后面的const 表示该函数不会修改它所属的类中的成员数据。

    【讨论】:

    • 虽然正确,但这并不能真正回答问题。
    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 2013-09-18
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    相关资源
    最近更新 更多