const Class 和成员函数
Const Class and member functions
如果要创建一个新的常量实例,是否需要定义常量函数class?
不知何故,当我尝试从 const class 实例访问它们时,我的编译器找不到“常规”(非 const)函数。
是的,如果一个对象是 const
,您只能对该对象调用 const
个函数。
如果一个函数没有被标记为 const
,编译器必须假设它被允许改变 class 的成员。并且由于您无法更改 const
class 实例的成员,因此您也无法在该实例上调用非 const
函数。
请注意,相反的情况是不同的 - 在非 const
对象上调用 const
函数没有问题。因此,建议 始终 将成员函数标记为 const
,只要这样做有意义。出于许多相同的原因,将函数参数、引用变量等标记为 const
很重要。社区通常将这种做法称为维护“常量正确性”。
如果要创建一个新的常量实例,是否需要定义常量函数class?
不知何故,当我尝试从 const class 实例访问它们时,我的编译器找不到“常规”(非 const)函数。
是的,如果一个对象是 const
,您只能对该对象调用 const
个函数。
如果一个函数没有被标记为 const
,编译器必须假设它被允许改变 class 的成员。并且由于您无法更改 const
class 实例的成员,因此您也无法在该实例上调用非 const
函数。
请注意,相反的情况是不同的 - 在非 const
对象上调用 const
函数没有问题。因此,建议 始终 将成员函数标记为 const
,只要这样做有意义。出于许多相同的原因,将函数参数、引用变量等标记为 const
很重要。社区通常将这种做法称为维护“常量正确性”。