问题标签 [multiple-inheritance]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 从任意数量的类派生
我有一个类,我希望它的功能依赖于一组插件策略。但是,我不确定如何让一个类派生自任意数量的类。
下面的代码是我想要实现的一个示例。
谢谢,保罗
c++ - C++ 中的自定义异常
我一直在尝试为我正在研究的 C++ 库创建一些自定义异常类。如果由于某种原因在测试异常时未在正确的位置捕获,这些自定义异常会捕获调试所需的额外信息,例如文件、行号等。然而,大多数人似乎建议从 STL 中的 std::exception 类继承,我同意这一点,但我想知道使用多重继承从每个派生的 std::exception 类继承可能会更好(例如.std::runtime_error) 和自定义异常类,如下面的代码所示?
另一件事,如何处理异常类中的复制构造函数和赋值运算符?他们应该被禁用吗?
php - 在php中模拟多重继承
我有一个模型系统:
将会有 R00_Model_iCommentableUnique 并且 R00_Model_Post 想要从它继承。但这是不可能的,它已经从 R00_Model_iTaggedUnique 继承了,我认为从 R00_Model_iCommentableUnique 继承 R00_Model_iTaggedUnique 并不聪明,反之亦然。我只想到了一个如何实现它的想法,但我有一些疑问。也许您可以告诉我一些聪明的方法或批评该方法?
我想使 R00_Model_i*Unique 不是类,而是接口,并创建辅助对象,例如 R00_Model_Helper_iUnique (也许它是一个常见的模式,并且有一个很酷的名字,我不认为 'Helper' 在那里会很酷? )。然后,在 R00_Model_iUnique 中,创建 __call(),它检查被调用对象的所有接口,并在帮助程序中查找被调用方法。
或者有太多的反射和其他邪恶的慢东西,不是吗?
.net - 是否有允许多个继承行为的 BDD 样式框架?
我们的许多系统测试都是以 BDD 风格编写的,我们充分利用继承的行为来最大限度地减少重复,例如,这可能是购买测试的基本层次结构。
在这种情况下,BehavesLikeSuccessfulPurchase
定义的常见行为(如帐户对帐单)应该有一个借记条目,并且BehavesLikePurchaseWithValidCreditCard
该类定义了使用有效信用卡购买任何类型产品的测试工作流程,因此测试是简单地提供具体产品实例的小型派生类,例如
但是,根据具体的产品类型,我们还需要进行一些额外的检查,例如,每当成功购买视频时,我们都希望检查它是否已添加到用户的视频库中。理想情况下,这可以由另一个类定义并混合使用,使用假设的语法:
但是当然 C# 不支持多重继承或混合,所以我们最终编写了一堆样板方法,将调用转发到其他行为,每次行为改变时都需要改变。
我们真正需要的是一个框架,它有自己的机制来支持测试中的多种行为,只需提供应该观察的其他行为的类型。我一直在查看 xUnit 和规范示例,看起来有可能提出一些可以解决问题的扩展,但是是否已经存在任何东西?
c++ - 用于类(vtables)的 C++ 单独编译器?
我想知道用一个不允许多重继承的编译器编译 A 类,并编译支持它的 B 类(以及从 A 类派生的 B 类)的后果是什么。
我不太了解链接过程...可以同时使用两者吗?在这种情况下使用单独的编译器和 vtables 存在哪些缺点?使用 B 类的代码是否无法正常运行?
谢谢。
c++ - 为什么在具有多个接口() 的对象中实现 QueryInterface() 时我需要显式向上转换
假设我有一个实现两个或多个 COM 接口的类:
我看到的几乎所有文档都表明,当我为 IUnknown 实现 QueryInterface() 时,我明确地将这个指针向上转换为一个接口:
问题是为什么我不能复制这个?
文档通常说,如果我这样做,我将违反对同一对象的任何 QueryInterface() 调用必须返回完全相同的值的要求。
我不太明白。它们是否意味着如果 IInterface2 的 I QI() 并通过该指针 C++ 调用 QueryInterface() 将传递这个与 IInterface2 的 I QI() 略有不同,因为 C++ 每次都会将此指向子对象?
c++ - 为什么即使对象指针在多重继承中不同,这也是一样的?
当使用多重继承时,C++ 必须维护几个 vtable,这导致公共基类具有“多个视图”。
这是一个代码片段:
它产生以下输出:
这里casted1
有casted2
不同的值,这是合理的,因为它们指向不同的子对象。在调用虚函数时,基类的转换已经完成,编译器不知道它最初是一个最派生的类。仍然每次都是一样的。它是如何发生的?
visual-c++ - What's the difference between COM_INTERFACE_ENTRY_IID and COM_INTERFACE_ENTRY2_IID?
Seems like both COM_INTERFACE_ENTRY_IID and COM_INTERFACE_ENTRY2_IID are for the case when the class is derived from two or more classes each derived from a common interface. Like this:
};
(both IPersistStream and IPersistFile derive from IPersist).
Looks like I'm free to include either
or
into the COM map of my class and it will work allright.
Is there any difference between the two?
inheritance - 基类可以告诉什么项目正在继承它
我有一个基类“AsyncHandlerBase”
基类被多个页面继承。当特定类继承特定代码时,基类中有什么方法可以执行特定代码吗?我会在页面本身上执行该特定代码,但在这种情况下是不可能的。
python - Python 中的继承,即调用所有基本函数
基本上,我想要的是这样做:
并有输出
我将如何实现 extendInherit 装饰器?