问题:何时使用继承与设置属性



我是Qt的新手。一个经常出现的问题是,我经常不确定是否使用继承。例如,要设置和自定义QFrame,我可以实例化QFrame并设置其所有属性(包括子对象)。或者,我可以将qframe子类化,并将所有设置代码放在类的构造函数(或构造函数调用的函数)中。

我的直觉是,选择取决于复杂程度,但分界线并不总是清晰的。这方面有最佳实践吗?

最佳实践?不要滥用遗产。遗传主要是多态性。有时代码重用。但是永远不会只是为了初始化一个对象。

可读性是一回事。灵活性、可维护性和可扩展性是需要记住的其他重要特性。

我想指出这篇文章:http://www.gotw.ca/publications/mill06.htm

这是一个有趣的问题。我的经验与Qt4有关。我逐渐转向Qt5并学习Qml,因为这似乎成为了Qt的标准和编写GUI的方式。

我在工作中使用了Qt,我们所做的是更喜欢避免继承的设置属性。问题是,有些Qt类必须继承才能在其受保护的方法中返回一些值。CCD_ 1就是一个例子。

从Qt继承有时意味着编写额外的代码并调用超级方法来获得类的默认行为,有时可能会忘记调用超级方法,从而获得不希望的行为。

我尽可能地使用作文。

我只能根据我的个人经历来回答你。导致派生类的主要因素是:

  • 您的类变得越来越复杂,有很多特定的设置(样式、大小、属性)。将它们固定在构造函数上很容易,并使代码更具可读性和组织性。

  • 你觉得把一些你在外面实现的方法移到里面似乎是合乎逻辑的。例如,一些对事件或筛选器的响应。

  • 您发现将一些插槽定义为对外部信号的响应非常有用。

  • 您发现实现小部件产生的信号很有用。

  • 您发现从中派生新类和/或在其他应用程序中重用它很有用。

最重要的一点是:尽可能使代码可读性和组织性最强。请记住,编译器可能会因为其优化器而更改整个程序!!!

是否使用继承通常不应该取决于如何初始化类的对象,而应该取决于需要创建什么类型的对象,以及是否扩展类

以抽象基类Shape类为例,我们可以继承它来生成三角形、圆形、矩形等类,因为每个继承的类都是Shape的一种类型,每个类都向现有基类添加新属性和/或功能

然而,如果我们添加一个Square类,有些人会认为这不是必需的,但它增加了确保边相等的功能,所以这是继承的有效论据。

在您的QFrame示例中,我个人不建议仅使用继承来设置对象,而是在父类(如果有)或main中创建一个单独的初始化函数。然而,如果您要添加属性或功能来创建不同类型的QFrame,那么继承就是最好的选择。

实际上,只要你的代码有效,就没有真正正确或错误的方法,但努力坚持它们的设计技术将使你的代码更容易阅读和维护。

相关内容

  • 没有找到相关文章

最新更新