什么是使函数“const”的意图

时间:2011-10-26 18:33:54

标签: c++ function const

像这样,

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

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

4 个答案:

答案 0 :(得分:11)

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

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

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

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

答案 1 :(得分:2)

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

基本上,您希望将所有不会更改对象状态的函数标记为const;这样,您可以使用const作为不变性声明,编译器将通过确保您只能调用const函数来强制执行它。

您可以在非const实例上调用const函数没问题。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

它表示该函数在逻辑上是常量的,也就是说,就该类的用户而言,该函数不会更改类成员的值。在const引用和const指针上调用const函数是合法的。