C++ 从叶类继承

C++ 从叶类继承,c++,class,inheritance,C++,Class,Inheritance,Sutter&Alexandrescu的编码标准书中有一个类设计指南,其中包括使基类抽象,这样就不能实例化它们。这是为了防止a.o.切片以及多态分配和复制问题 但是,当使用类库(如Qt)时,通常的做法是从库中继承concordete类以添加其他行为。例如,可以创建一个从QListBox继承的类MyListBox,为我的应用程序中的所有列表框添加特定于应用程序的行为 如何将这种常见做法与具有不可实例化基类的建议相协调 你的第一句话包含了你想要的答案: 在Sutter&Alexandrescu的编码

Sutter&Alexandrescu的编码标准书中有一个类设计指南,其中包括使基类抽象,这样就不能实例化它们。这是为了防止a.o.切片以及多态分配和复制问题

但是,当使用类库(如Qt)时,通常的做法是从库中继承concordete类以添加其他行为。例如,可以创建一个从QListBox继承的类MyListBox,为我的应用程序中的所有列表框添加特定于应用程序的行为


如何将这种常见做法与具有不可实例化基类的建议相协调

你的第一句话包含了你想要的答案:

在Sutter&Alexandrescu的编码标准书中找到了类设计指南

(我的重点)

这只是一个指导方针,而不是刻在石头上的规则

如果您有特定的技术限制,例如在您正在使用的库中,如果给定的替代方案在特定时刻更糟糕,您可能会忽略它(例如必须使用某些模式使代码总量增加三倍或必须重写库)


我回答的要点是:所有这些模式、准则和最佳实践都是实现编程目标的手段。它们本身并不是目标。

你的第一句话就包含了你想要的答案:

在Sutter&Alexandrescu的编码标准书中找到了类设计指南

(我的重点)

这只是一个指导方针,而不是刻在石头上的规则

如果您有特定的技术限制,例如在您正在使用的库中,如果给定的替代方案在特定时刻更糟糕,您可能会忽略它(例如必须使用某些模式使代码总量增加三倍或必须重写库)


我回答的要点是:所有这些模式、准则和最佳实践都是实现编程目标的手段。它们本身并不是目标。

该指南只适用于基类,不应实例化(通常是因为这样做没有意义)。在您的示例中并非如此:例如,仅仅因为您继承了
QDialog
,并不意味着您不想在代码的其他地方使用普通的
QDialog

该准则只适用于基类,不应该实例化(通常因为这样做没有意义)。在您的示例中并非如此:例如,仅仅因为您继承了
QDialog
,并不意味着您不想在代码的其他地方使用普通的
QDialog
s