如果我要繼承一個類,我是否必須定義它的所有虛擬和純虛函數?C++ - 繼承虛函數實現
例如,我有一個繼承自QAbstractItemModel
的派生類。 QAbstractItemModel
具有以下純虛函數。如果我的派生類不打算使用index()
和parent()
方法,是否需要實現它?
//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;
http://stackoverflow.com/questions/2089083/pure-virtual-function-with-implementation - 是的,你將不得不在你的派生類中定義純虛函數,如果該類將被實例化。 'QAbstractItemModel'不提供'index'或'parent'的定義,所以你需要提供你自己的。如果它提供了實現,你可以從你的子類調用基類的版本。 – birryree 2012-04-09 20:49:04
http://stackoverflow.com/questions/2089083/pure-virtual-function-with-implementation – 2012-04-09 20:52:49
[C++ Virtual/Pure Virtual Explained]的可能重複(http://stackoverflow.com/questions/1306778/c-virtual - 純虛擬解釋) – 2012-04-09 20:53:31