Ключевые слова наследования

Блок, относящийся только к системам Microsoft

class [__single_inheritance] class-name; 
class [__multiple_inheritance] class-name; 
class [__virtual_inheritance] class-name;

Здесь:

  • имя-класса
    Имя объявляемого класса.

В C++ указатель на член класса можно объявить до определения класса. Например:

class S;
int S::*p;

В представленном выше коде p объявляется как указатель на целочисленный член класса S. Однако class S еще не определен в этом коде; он только объявлен. Когда компилятор обнаруживает такой указатель, он должен создать обобщенное представление указателя. Размер представления зависит от указанной модели наследования. Указать модель наследования для компилятора можно четырьмя способами.

  • В интегрированной среде разработки в разделе Представление указателя на член.

  • В командной строке с помощью переключателя /vmg.

  • С помощью директивы pragma pointers_to_members.

  • С помощью ключевых слов наследования __single_inheritance, __multiple_inheritance и __virtual_inheritance. При использовании этого метода управление моделью наследования осуществляется на уровне класса.

    Примечание

    Если указатель на член класса всегда объявляется после определения класса, нет необходимости использовать какой-либо из этих параметров.

Объявление указателя на член класса до определения класса влияет на размер и скорость полученного исполняемого файла. Чем сложнее наследование, используемое в классе, тем больше число байтов, требуемых для представления указателя на член класса, и тем больше код, необходимый для интерпретации указателя. Одиночное наследование является самым простым, а виртуальное наследование — самым сложным.

Если приведенный выше пример изменить на

class __single_inheritance S;
int S::*p;

независимо от параметров командной строки или директив pragma указатели на члены class S будут использовать наименьшее возможное представление.

Примечание

То же опережающее объявление представления указателя на член должно быть включено в каждую запись преобразования, которая объявляет указатели на члены этого класса, и объявление должно выполняться до объявления указателей на члены.

Завершение блока, относящегося только к системам Microsoft

См. также

Ссылки

Ключевые слова в C++