如果我的函数是const,那么参数也必须是const吗?

Bon*_*bin 1 c++ const

假设我有一个不应修改类中的参数或其他任何功能的函数,例如:

bool isPossible(int x1, int y1, int x2, int y2) const {
    return x1 < x2 && y1 < y2;
}
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,我应该将所有参数设置为const以及函数本身,还是仅将函数设置为const(我现在的方式)就足够了?

那就是,它应该是这样吗?

bool AABB::isPossible(const int& x1, const int& y1, const int& x2, const int& y2) const {
    return *x1 < *x2 && *y1 < *y2;
}
Run Code Online (Sandbox Code Playgroud)

gio*_*gim 5

函数const是概念上与const函数的参数之间没有关系.它们用于不同的目的:

  • Const函数表示该函数不应更改类成员
  • 参数为const函数的参数值不应在函数内部改变

因此,如果您希望函数参数是const,那么您应该单独决定函数本身是const.

例如,在您的特定情况下,虽然您确实可以声明您的函数参数,const因为您没有在函数内部修改它们(尽管可能在这种特殊情况下不会添加太多).

将参考参数设置为const更有意义(在需要时),如其他答案所述.