我在一个大型协作项目中工作(其中大部分都是非专业程序员,我也是其中之一)。我经常看到以下情况的例子:
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;}
}
应用场景
,其中一个例子是:A a;
I i;
a->GetMember()->DoChanges(i);
V v = a->GetMember()->GetValue();
当我学习编程课程时,我被灌输了一个观念,即const不仅指类实例的位结构,还包括内部逻辑结构。这种做法违反了这个观念。根据这种哲学,成员函数应采取以下形式:
T* GetMember() {return fMember;}
const T* GetMember() const {return fMember;}
我听说有些人认为const应该严格只用于成员变量,这是使用C++术语的严格说法。有什么理由支持这种做法吗?