使函数"const"的意图是什么
What is intention of making a function "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函数是合法的。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- C++中名称篡改的目的是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 派生类销毁的最佳实践是什么
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 通过JNI传递数据数组的最快方法是什么
- "using namespace std;"在C++的作用是什么?
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 文件系统:复制功能的速度秘诀是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 新 char[] 产生对齐内存的标准要求C++背后的意图是什么?
- 使函数"const"的意图是什么
- ODR的意图是什么