1

如果我要从一个类继承,我是否必须定义它的所有虚函数和纯虚函数?

例如,我有一个继承自QAbstractItemModel. QAbstractItemModel具有以下纯虚函数。如果我的派生类不打算使用index()andparent()方法,我需要实现它吗?

//qabstractitemmodel.h
virtual QModelIndex index(int row, int column,
                              const QModelIndex &parent = QModelIndex()) const = 0;
virtual QModelIndex parent(const QModelIndex &child) const = 0;
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const = 0;
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const = 0;
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const = 0;
4

2 回答 2

3

你根本不需要在你的派生类中实现任何东西,但是如果你让任何纯虚成员函数没有实现,那么派生类仍然是抽象的(换句话说,你将无法实例化一个该类的对象)。

编辑: 要考虑的其他事情 - 如果您的基类包含您的派生类不想要/不需要的纯虚函数,也许值得考虑另一种设计?也许使用多个声明接口不同部分的基类。

如果index()并且parent()不适用于所有派生类,QAbstractItemModel那么我认为这些函数可能不属于QAbstractItemModel真正的

于 2012-04-09T20:49:24.437 回答
2

是的。将方法声明为纯虚拟('= 0')意味着任何具体的子类(可以实例化)都必须实现它们。

于 2012-04-09T20:49:43.673 回答