我正在尝试理解以下文本的一部分,这些文本可以在 Bjarne Stroustrup (TC++PL) 的 C++ 编程语言,第四版中找到。
3.2.2 抽象类型
诸如
和complex
之类的类型称为具体类型,因为它们的表示是其定义的一部分。在这一点上,它们类似于内置类型。相反,抽象类型是这样的类型: 将用户与实现细节完全隔离。为此,我们将接口与表示解耦,并放弃真正的局部变量。 由于我们对抽象类型的表示一无所知(甚至不知道它的大小),因此我们必须在空闲存储上分配对象(第 3.2.1.2 节,第 11.2 节)并通过引用或指针访问它们(第 2.2 节) .5、第 7.2 条、第 7.7 条)。Vector
重点是我的。
为什么要免费商店?从抽象类派生的类的对象可以像任何其他局部变量一样进行分配。我不知道 TC++PL 在这句话中到底想表达什么。
我认为这是一个不正确的说法。例如,如果您有一个抽象基类 B 和派生(非抽象)类 D,那么您可以编写
D d;
B &b = d;
如果此代码位于某个函数中,则 D 类型的对象会在堆栈中创建。
它们的意思是,如果你想使用某个抽象类而不知道具体类型是什么,则必须对其使用动态分配,即你不能编写
abstract_class A = concrete_class B;