C++ 继承 - QList

Posted

技术标签:

【中文标题】C++ 继承 - QList【英文标题】:C++ Inheritance - QList 【发布时间】:2012-03-13 17:23:55 【问题描述】:

我有一个类 Car,它继承了 QList。我想知道如何使用我刚刚继承的 QList?

根据我对如何使用继承的业余理解,如果 Car 继承 Vehicle,我将通过 Vehicle::getWheels() 访问 Vehicle 的方法。如果我继承 QList,这将如何工作?

【问题讨论】:

从像 QList 这样的容器继承是没有意义的。它没有可以重新实现的虚拟方法。最好遵循“组合优于继承”规则,并使 QList 成为成员。 我完全同意 Frank Osterfeld 的观点 - 谢谢他。从容器类继承时要非常小心,并重新分析您的设计:遵循弗兰克提到的规则 【参考方案1】:

如果您的 Car 继承自 Vehicle,您可以简单地使用继承的方法(如果您没有覆盖这些方法)。示例:

class Vehicle

    int wheels_;

    public:
        Vehicle(int wheels=4)
        : wheels_(wheels)
        
        

        int getWheels() const  return wheels_; 
;

class Car: public Vehicle

;

Car myCar;
myCar.getWheels();

因此,对于您的问题,如果您的课程被取消为class Car : public QList< int > ... ;,您可以简单地使用QList< int > 的成员而无需明确说明。

【讨论】:

如果 Car 继承了 QList,这将如何工作?例如,如何将元素添加到 QList 中? 你可以使用Car c; c.append(5);

以上是关于C++ 继承 - QList的主要内容,如果未能解决你的问题,请参考以下文章

我们可以从 Qt 容器继承吗?

来自两个抽象类的多重继承 (Qt)

C++继承之C++中不同的继承体系

C++继承之C++中不同的继承体系

C++继承之C++中不同的继承体系

C++继承汇总(单继承多继承虚继承菱形继承)