Приведение
Язык C++ обеспечивает, что если класс является производным от базового класса, содержащий виртуальные функции, то указатель к этому типу базового класса можно использовать для вызова реализации виртуальных функций, хранимых в объекте производного класса.Класс, содержащий виртуальные функции иногда называется «полиморфный класс».
Поскольку производный класс полностью содержит определения всех базовых классов, из которого он является производным, безопасное приведение указателя вверх по иерархии классов с любым из этих базовых классов.Получив указатель на базовый класс может быть безопасно привести указатель вниз по иерархии.Если безопасность, указанным в виртуальный объект типа, производного от базового класса.В этом случае говорят, что фактический объект «полным объектом». Считается, что указывает указатель на базовый класс «subobject» полного объекта.Например, рассмотрим иерархию классов, показанной на следующем рисунке.
Иерархия классов
объект типа C может быть визуализировано как показано на следующем рисунке.
Класс c#, с Subobject B и Subobject
Получив экземпляр класса Ca B subobject и A subobject.экземпляр C, в том числе A и B subobjects «полный объект.»
Использование сведений о типах во время выполнения, можно проверить наличие точки указателя, фактически к общему объектом и может быть безопасно привести чтобы она указывала на другой объект в иерархии. dynamic_cast оператор может использоваться для следующих приведений. эти типыОн также выполняет проверку во время выполнения, необходимый, чтобы сделать безопасные операции.
Для преобразования типов можно использовать nonpolymorphic static_cast оператор (в этом разделе объясняется разница между статическим и динамическим преобразованиями и приведения, если соответствующее использовать каждое).
Данный раздел охватывает следующее: