我在大型合作中工作(大部分是非专业程序员,我是其中之一).我经常看到以下的例子
void T::DoChanges(I i); // will make changes to internal structure of T (non-const)
V T::GetValue();
class A
{
private:
T* fMember;
public:
A();
T* GetMember() const {return fMember;}
}
Run Code Online (Sandbox Code Playgroud)
,如果是一个用例
A a;
I i;
a->GetMember()->DoChanges(i);
V v = a->GetMember()->GetValue();
Run Code Online (Sandbox Code Playgroud)
当我参加编程课程时,这种做法违反了钻进我的租户,即const不仅指代类实例的按位结构,还指内部逻辑结构.根据这一理念,成员函数应采用以下形式:
T* GetMember() {return fMember;}
const T* GetMember() const {return fMember;}
Run Code Online (Sandbox Code Playgroud)
我听说有些人认为const应该只引用成员,严格地使用c ++术语.如何/为什么会有人争论这种做法?