做这样的事情合理吗?
注意:这是一个最小的工作示例
class A {
public:
int getX() { return x; }
protected:
int x;
virtual void setX(int newX) = 0;
};
// Children can modify X
class Can_Modify_X : public A {
protected:
void setX(int newX) { x = newX; }
private:
using A::x;
};
// Children can't modify X
class Can_Not_Modify_X : public A {
private:
void setX(int newX) { }
using A::x;
};
我知道我不能简单地隐藏一个函数,因为这会违反 Liskov 原则,但是进行private
继承并再次指定所有公共方法似乎真的是多余的。
这两个类必须有一个共同的父类(即使它直接是其中之一),并且不能x
直接修改。
using
奖金:有人可以指出我在这种情况下定义确切行为的地方吗?我尝试用谷歌搜索它,但收效甚微。