一个const成员函数,返回一个指向非const成员变量的指针,为什么它会好?

qon*_*onf 8 c++

我在大型合作中工作(大部分是非专业程序员,我是其中之一).我经常看到以下的例子

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 ++术语.如何/为什么会有人争论这种做法?

Alo*_*ave 4

创建成员函数向该函数的用户表明它不会修改任何类成员。
返回的成员可能是也可能不是,const但是使成员函数成为 const 可以让类的用户清楚地指示函数的行为。