类的非常量数据成员不应为 protected
5.1.2 ID_protectedData
protected 数据成员在派生类中仍可被随意读写,破坏了封装理念。
本规则是 ID_nonPrivateData 的特化,关于封装的进一步讨论可参见 ID_nonPrivateData。
常量数据成员不可被改变,所以可不受本规则约束。
示例:
class A {
....
protected:
int data; // Non-compliant
};
应改为由接口访问:
class A {
....
protected:
int access_data(); // Interfaces for data
private:
int data; // Compliant
};