有人告诉我他们团队中C++风格的差异。对于这个问题我有自己的看法,但是我会对每个人的利弊感兴趣。
因此,如果您要通过两个getter(一个读/写,另一个是只读)公开一个类属性(即没有set方法)。至少有两种方法可以执行此操作:
class T ;
class MethodA
{
public :
const T & get() const ;
T & get() ;
// etc.
} ;
class MethodB
{
public :
const T & getAsConst() const ;
T & get() ;
// etc.
} ;
每种方法的利弊是什么?
我对C++的技术/语义原因更感兴趣,但也欢迎样式原因。
注意
MethodB
有一个主要的技术缺点(提示:通用代码中)。 最佳答案
好吧,一方面,必须在“this”指针为const时调用getAsConst,而不是在您希望接收const对象时调用。因此,除了任何其他问题外,它的名字也被巧妙地误用了。 (当“this”是非常量时,您仍然可以调用它,但这不在这里或那里。)
忽略这一点,getAsConst不会给您带来任何 yield ,并且会给使用该接口(interface)的开发人员带来不必要的负担。现在,他必须确定自己是否正在使用const变量,以及是否要获取的新对象需要是const,而不仅仅是调用“get”并知道他正在获取所需的东西。然后,如果两个对象由于某种重构而变为非常量,则他必须退出 call 。
关于c++ - “get() const”与“getAsConst() const”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/97081/