我们有两个类(class)(A 和 B)。 A类只能由继承它的类创建(A类) B 类可以由用户创建。
A 类,版本 1 有一个private 数据成员,并且有方法访问 A 类中的数据。
A 类,版本 2 有一个protected 数据成员,因此,从该类继承的类不需要任何方法来访问 A 类中的数据
A 类,版本 1
class A
{
protected:
A() = default;
void set_data( T d );
T& get_data();
private:
T data;
}
A 类,版本 2
class A
{
protected:
A() = default;
T data;
}
B 级
class B : public A {}
哪个版本的 A 类是首选?
最佳答案
这是相当主观的,但我会说 95% 的情况下两者都不是。 protected 数据使您的代码与公开的代码一样难以维护,因此我们立即排除该版本。但是您几乎永远不需要直接的修改器(设置)函数,因此我们将砍掉该函数,然后将 get 函数的签名更改为 const T& get_data() const;
。然后我们将向父级添加一个真实接口(interface)来操纵其状态,而不是让外部的东西决定新状态应该是什么。
关于c++ - protected 数据成员的 protected 获取函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27823381/