具有多态性的对象声明中的逗号

Comma in object declaration with polymorphism

本文关键字:声明 对象 多态性      更新时间:2023-10-16

所以最近我参加了一次考试,在考试中,我在main((函数中得到了一些代码(除其他外(,我应该检查代码是否正确。我不记得确切的代码,但它是这样的。

Base* b = new Derived(), x;

现在我知道Base* b = new Derived()是做什么的,但我从未见过|使用逗号X段代码。像什么?我在哪里可以找到一些材料来研究它?

通常,可以在同一行上声明多个实体,用逗号分隔。初始 decl-specifier-seq 适用于要声明的所有实体。每个实体都有自己的初始化声明器

在您的示例中,decl-specifier-seqBase ,这意味着所有被声明的变量都具有与 Base 有关的类型。在 decl-specifier-seq 之后,有两个 init-declarator,即 *b = new Derived()x,用逗号分隔。请注意,*不是 decl-specifier-seq 的一部分,因此它仅适用于它所在的一个 init 声明符。因此,您的声明等同于:

Base *b = new Derived();
Base x;