gpt4 book ai didi

c++ - 在派生类对象中使用派生类构造函数与基类类型兼容

转载 作者:行者123 更新时间:2023-11-28 08:24:13 25 4
gpt4 key购买 nike

class baseClass{};
class derivedClass : public baseClass{};
baseClass *obj = new derivedClass ; // For simplicity, I amn't providing any-
// class members.

尽管 baseClassderivedClass 构造发生了,但是 derivedClass 成员对 obj 是不透明的。那么,构造derivedClass有什么用。顺便说一句,我知道 derivedClass 构造函数调用 baseClass 构造函数,并且在返回时应该进行 derivedClass 构造。到底有什么用呢?只是想知道为什么这样设计:)

最佳答案

一句话,多态。换句话说,在多个类派生自一个公共(public)基类的系统中,它能够以相同的方式处理不同派生类的对象,而无需担心它们的实际类型。

考虑一个管理各种形状的绘图包。您可以选择使用一个名为 Shape 的抽象基类,它实现了诸如 Draw() 之类的通用方法,并且可能具有一些对所有形状都通用的通用数据成员,例如 x-pos 和 y-pos。然后您可以创建一些派生的具体类,如 Ellipse 和 Square,它们将采用自己的特定于形状的构造函数参数并覆盖抽象类中的 Draw() 方法。例如,Circle 构造函数可能需要 x-pos、y-pos 和半径;它将使用 radius 参数本身,但将 x-pos 和 y-pos 参数传递给继承的构造函数。

然后您可以实现一个 Drawing() 类,它充当各种形状的容器,并遍历该容器以呈现您的绘图,而无需担心您正在绘制的特定形状的实际类型。

关于c++ - 在派生类对象中使用派生类构造函数与基类类型兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4623835/

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