以下代码用于在同时存在const
和非const
getter时减少代码重复。它会从非const
创建const
版本。我对此进行了一些搜索,很多人都说我应该从const
创建非const
版本。
我的想法是,如果我从const
版本创建非const
版本,与下面的代码相反,则取消引用最初返回的指针或引用可能是不安全的{{ 1}}。我真的不确定这一点,所以我要求澄清,以及正确的方向是什么?
const
答案 0 :(得分:3)
您应始终从non-const
创建const
版本,而不是以对等方式创建。解释很简单,这样想:
您只能在non-const
对象上调用non-const
getter。如果对象为non-const
,您可以在const_cast
方法中安全地const
non-const
获取者。为什么?因为您只能在non-const
对象上调用此方法。
执行对等操作并不是很安全,因为在non-const
中调用const
方法无法保证时,会保留该常量。