继承关键字

Microsoft 专用

class class-name
class __single_inheritance class-name
class __multiple_inheritance class-name
class __virtual_inheritance class-name

地点:

class-name
要声明的类的名称。

C++允许在类定义之前声明指向类成员的指针。 例如:

class S;
int S::*p;

在上面的代码中, p 声明为指向类 S 的整数成员的指针。但是, class S 尚未在此代码中定义;它只是声明的。 当编译器遇到此类指针时,它必须使指针的通用表示形式。 表示形式的大小取决于指定的继承模型。 可通过三种方法向编译器指定继承模型:

  • 在命令行中使用 /vmg 开关

  • pointers_to_members使用杂注

  • 使用继承关键字__single_inheritance__multiple_inheritance__virtual_inheritance。 此方法基于每个类控制继承模型。

    注释

    如果在定义类后始终声明指向类成员的指针,则无需使用这些选项。

如果在定义类之前声明指向类成员的指针,则它可能会对生成的可执行文件的大小和速度产生负面影响。 类使用的继承越复杂,表示指向类成员的指针所需的字节数越大。 而且,解释指针所需的代码越大。 单个(或否)继承最复杂,虚拟继承最复杂。 在定义类之前声明的成员的指针始终使用最大、最复杂的表示形式。

如果上面的示例更改为:

class __single_inheritance S;
int S::*p;

然后,无论指定的命令行选项或杂注,指向成员的 class S 指针都将使用尽可能小的表示形式。

注释

类指针到成员表示形式的同一向前声明应在声明指向该类成员的指针的每个转换单元中发生,声明应在声明指向成员的指针之前发生。

为了与以前的版本、_single_inheritance_virtual_inheritance_multiple_inheritance同义词兼容__single_inheritance__multiple_inheritance__virtual_inheritance除非指定编译器选项/Za(禁用语言扩展)。

结束 Microsoft 专用

另请参阅

关键字