【发布时间】:2016-04-19 16:24:35
【问题描述】:
我有一个抽象类A 和一个纯虚函数toDoOrNotToDo。我有两个子类A1 和A2,这样A1 需要toDoOrNotToDo 的const int x 参数来完成它的工作,而A2 不需要那个参数来完成它的工作。
但是如果我写
class A2 : public A {
public:
int toDoOrNotToDo() const override;
};
它显然会抱怨:
'int A2::toDoOrNotToDo() const' 标记覆盖,但不覆盖
我可以写:
class A {
public:
virtual int toDoOrNotToDo(const int x) const = 0;
virtual ~A();
};
class A1 : public A {
public:
int toDoOrNotToDo(const int) const override;
};
class A2 : public A {
public:
int toDoOrNotToDo(const int) const override;
};
但是在A2::toDoOrNotToDo 中我有一个不需要的参数。
如何改进设计?
【问题讨论】:
-
您可以改用默认参数。只要这些函数没有相同的签名,它们就永远不会在虚拟继承中匹配。
标签: c++ inheritance abstract-class pure-virtual