【发布时间】:2011-10-26 18:33:54
【问题描述】:
这样,
bool isEmpty() const { return root==NULL; }
这是isEmpty函数,测试BST是否为空。
【问题讨论】:
这样,
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 函数是合法的。
【讨论】: