Microsoft 专用
classclass-name
class __single_inheritanceclass-name
class __multiple_inheritanceclass-name
class __virtual_inheritanceclass-name
地点:
class-name
要声明的类的名称。
C++允许在类定义之前声明指向类成员的指针。 例如:
class S;
int S::*p;
在上面的代码中, p 声明为指向类 S 的整数成员的指针。但是, class S 尚未在此代码中定义;它只是声明的。 当编译器遇到此类指针时,它必须使指针的通用表示形式。 表示形式的大小取决于指定的继承模型。 可通过三种方法向编译器指定继承模型:
在命令行中使用
/vmg开关使用继承关键字
__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 专用