在查看 Qt 代码时,我对 pimpl 实现有一个基本问题。以 QWidget 实现为例。
QWidget ---inherits---> QObject
| |
contains contains
| |
\ / \ /
QWidgetPrivate ---inherits---> QObjectPrivate
Run Code Online (Sandbox Code Playgroud)
现在 QWidget 有两个 QObjectPrivate 实例(通过继承和通过包含)。为什么要这样实施呢?拥有同一个对象的两个实例不是一种开销吗?
在对Internet进行一些研究以获得在C++中实现事件的有效方法之后,我发现了以下方法
我对这些中的每一个的优点和缺点以及何时使用其中的任何一个感到困惑.哪种方法最好,为什么?还有其他解决方案比列出的解决方案更好吗?
这是我在设计界面时遇到的问题的一个例子.
我有一个动物类,我从中获得了猫,狗和狮子.现在我有一个函数'feedFood',它接受基类Animal作为参数.根据动物的类型,我应该给动物喂食不同的食物.
那么如何在'feedFood'功能中检查动物的类型.
我能想到3种方法
哪种方法最好,还是有其他更好的方法?