const Class 和成员函数

Const Class and member functions

如果要创建一个新的常量实例,是否需要定义常量函数class?

不知何故,当我尝试从 const class 实例访问它们时,我的编译器找不到“常规”(非 const)函数。

是的,如果一个对象是 const,您只能对该对象调用 const 个函数。

如果一个函数没有被标记为 const,编译器必须假设它被允许改变 class 的成员。并且由于您无法更改 const class 实例的成员,因此您也无法在该实例上调用非 const 函数。

请注意,相反的情况是不同的 - 在非 const 对象上调用 const 函数没有问题。因此,建议 始终 将成员函数标记为 const,只要这样做有意义。出于许多相同的原因,将函数参数、引用变量等标记为 const 很重要。社区通常将这种做法称为维护“常量正确性”。