使函数"const"的意图是什么



像这样,

bool isEmpty() const { return root==NULL; }

这是isEmpty函数,测试BST是否为空

表示该函数不修改该类的任何成员。

通常,接口/声明(通过头文件)对类/函数的用户可用,而不是实现,因此const向用户明确表示该函数不修改任何成员。

添加const还使函数的用户意识到当您有const对象时应该使用这个const成员函数。不能在该类的const对象上调用普通成员函数,这会导致编译错误。

这就是函数被标记为const的原因,即使它是空的。它表示函数实现者和函数用户之间的契约。

当一个函数被标记为const时,该函数可以在该类的const实例上调用。在const对象上调用非const函数将导致编译时错误。

基本上,你想把所有不改变对象状态的函数标记为const;通过这种方式,您可以使用const作为不可变性声明,并且编译器将通过确保您只能调用const函数来强制执行它。

可以在非const实例上调用const函数。

它告诉编译器该函数不会修改类的状态。另外,const函数是唯一允许在const对象上调用的函数。

表示该函数在逻辑上是恒定的,即对于类的用户而言,该类成员的值不会被函数改变。在const引用和通过const指针调用const函数是合法的。

最新更新