从抽象类派生的类的对象应该在免费存储中吗? [已关闭]

问题描述 投票:0回答:2

我正在尝试理解以下文本的一部分,这些文本可以在 Bjarne Stroustrup (TC++PL) 的 C++ 编程语言,第四版中找到。

3.2.2 抽象类型

诸如

complex
Vector
之类的类型称为具体类型,因为它们的表示是其定义的一部分。在这一点上,它们类似于内置类型。相反,抽象类型是这样的类型: 将用户与实现细节完全隔离。为此,我们将接口与表示解耦,并放弃真正的局部变量。 由于我们对抽象类型的表示一无所知(甚至不知道它的大小),因此我们必须在空闲存储上分配对象(第 3.2.1.2 节,第 11.2 节)并通过引用或指针访问它们(第 2.2 节) .5、第 7.2 条、第 7.7 条)。

重点是我的。

为什么要免费商店?从抽象类派生的类的对象可以像任何其他局部变量一样进行分配。我不知道 TC++PL 在这句话中到底想表达什么。

c++ abstract-class
2个回答
3
投票

我认为这是一个不正确的说法。例如,如果您有一个抽象基类 B 和派生(非抽象)类 D,那么您可以编写

D d;
B &b = d;

如果此代码位于某个函数中,则 D 类型的对象会在堆栈中创建。


0
投票

它们的意思是,如果你想使用某个抽象类而不知道具体类型是什么,则必须对其使用动态分配,即你不能编写

abstract_class A = concrete_class B;

© www.soinside.com 2019 - 2024. All rights reserved.