gpt4 book ai didi

architecture - 多重继承、多态性和更新的编程方式

转载 作者:行者123 更新时间:2023-12-01 15:14:34 27 4
gpt4 key购买 nike

我想一劳永逸地澄清这个有点主观和有争议的编程领域。

多重继承

在我目前的工作环境中,我有 C++ 开发人员和 C# 开发人员,他们来自完全不同的世界,因此对编程布局有不同的看法。

现在我自己是一名 C# 和 Java 开发人员,我从来没有达到我实际需要使用多重继承的状态,但我周围的 C++ 开发人员倾向于通过诸如“这将是使用多重继承的完美方式”之类的评论"

当然我倾向于不同意。

我的问题

在什么情况下,多重继承会比使用接口(interface)和简单继承更好或更容易地解决问题?

你总能通过使用 ie 成员变量来解决多重继承的好处吗?

最佳答案

多重继承是一个很好的特性。那些曾经用 MI 编写代码的人,自然会从不同的角度来解决问题。然而,对一个程序员来说“更容易”的东西,对另一个程序员来说可能“更难”。
有关 MI 的 C++ 特定信息,请参阅 Herb Sutter's文章:

Combining Modules/Libraries

Many classes are designed to be base classes; that is, to use them you are intended to inherit from them. The natural consequence: What if you want to write a class that extends two libraries, and you are required to inherit from a class in each? Because you usually don't have the option of changing the library code (if you purchased the library from a third-party vendor, or it is a module produced by another project team inside your company), MI is necessary.

Ease of (Polymorphic) Use

There are examples where allowing MI greatly simplifies using the same object polymorphically in different ways. One good example is found in C++PL3 14.2.2 which demonstrates an MI-based design for exception classes, where a most-derived exception class may have a polymorphic IS-A relationship with multiple direct base classes.

关于architecture - 多重继承、多态性和更新的编程方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1637347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com