Пожалуйста, просмотрите, как работает компилятор с полиморфизмом [закрыто]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Пожалуйста, просмотрите, как работает компилятор с полиморфизмом [закрыто]

Сообщение Anonymous »

может ли кто -нибудь просмотреть процедуру ниже и сообщить мне, если есть что -то неправильное? Спасибо!
class A {
public:
virtual ~A() {}
virtual void foo() { std::cout
Шаг 2: Если мы попытаемся вызвать функцию ( скажем, func () ), используя указатель, созданный* ptr_a = new c ()

Если Функция не виртационна в иерархии наследования между и c , ptr_a-> func () вызовы, которые объявлены в на основе статического типа.

[*] Если функция является виртуальной: во время компиляции, компилятор определяет, какие функции доступны через статический тип ptr_a (т.е. все общедоступные/защищенные Виртуальные функции, объявленные в , доступны).

[*] Если функция доступна во время компиляции, мы ищем имя функции в VTable и определите, какая конкретная реализация виртуальной функции выполняется. Указатель такой: c* ptr_c = dynamic_cast (ptr_a);

Сначала проверьте, если ptr_c null. Если (1) C не является потомком a или if (2) Все предки C не полиморфные, то Dynamic_cast возвращает null.

[*] Если ptr_c не является нулевым, во время выполнения, dynamic_cast предоставляет доступ ко всем публичным/защищенным функциям, объявленным в C , и в тех унаследован от предков C (A и b ).

[/list]
ожидание:
C::bar
B::foo


Подробнее здесь: https://stackoverflow.com/questions/794 ... lymorphism
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Шаблон проектирования ООП-команд с полиморфизмом
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Проблемы c++ с полиморфизмом и наследованием
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Разница между полиморфизмом и абстракцией
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Исправьте «ошибку превышения квоты» в CloudKit и просмотрите использование контейнера.
    Anonymous » » в форуме IOS
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Просмотрите количество пользователей, подключенных к приложению Spring Boot и Tomcat.
    Anonymous » » в форуме JAVA
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»