不确定 c++ 中的常量函数是什么

Not sure what a constant function is in c++

本文关键字:函数 是什么 常量 c++ 不确定      更新时间:2023-10-16

赋值是创建一个返回矩形面积的常量函数getArea()

double getArea() {
return width * height;
}

是这样吗?

我是否在参数后放置常量?

我真的不明白我被问到什么。

在C++中,当 const 关键字用于函数的声明时,函数将变为 const。const 函数的想法是不允许它们修改调用它们的对象。

double getArea() const    {
return width * height;
}

const 在函数声明中的 (空) 参数列表之后。 表示 getArea() 函数不修改对象的状态,即对象的数据成员。

有关更多说明,请参阅此链接: http://www.codeproject.com/Articles/389602/Constant-Member-Functions-Are-Not-Always-Constant

double getArea() const 
{
return width * height;
}

当用户不想修改或更改该变量或函数的值时,将使用 const 关键字。

就像内置数据类型(intdoublechar等)一样,类对象可以使用const关键字const。所有const变量都必须在创建时初始化。

一旦通过构造函数初始化了const类对象,就不允许任何修改对象成员变量的尝试,因为这会违反对象的恒定性。这包括直接更改成员变量(如果它们是公共的),或调用设置成员变量值的成员函数。

const类对象只能调用const成员函数。const成员函数是保证它不会更改任何类变量或调用任何非常量成员函数的成员函数。

来源 :leancpp.com

考虑:

class ClassType
{
int x;
public:
ClassType(int _x) : x(_x) {}
int GetX() { return x;}
};
const ClassType object(20);
object.GetX();

这将无法编译,因为object是 const(只读)。但GetX未标记为const(只读)。length()size()IsOpen()是从只读对象调用的方法的示例。因此,该类应该为常量对象提供这种(const)函数。

您通常不会创建 const 对象,但会像这样传递它们:

void foo(const ClassType& obj);

因此,GetX函数应为:

int GetX() const { return x;}

const承诺或约定此函数不会修改此对象