Решение двусмысленности виртуальной функцииC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Решение двусмысленности виртуальной функции

Сообщение Anonymous »

Итак, я получил объяснение спуска, что на самом деле является виртуальной функцией < /em> и почему мы действительно нуждаемся, < /p>


в C ++, что такое виртуальный базовый класс? На мой взгляд, как компилятор на самом деле интерпретирует то, какое определение следует использовать в случае множественного или гибридного наследования. Например, рассмотрим этот пример < /p>

Код: Выделить всё

class Up {
public:
void func(){
...
}
};

class Middle_1 : public virtual Up {
public:
...
};

class Middle_2 : public virtual Up {
public:
...
};

class Down : public Middle_1, public Middle_2 {
public:
...
};
В примере примере код, класс Down получает два определения класса UP (то есть один от middle_1 , а другой от middle_2 ). Однако мы обеспечили использовать класс виртуального в Middle_1 и Middle_2 , который удалит случай двусмысленности (поскольку компилятор будет принимать только одно определение), и именно здесь возникнет мой вопрос. < /p>

На самом деле у меня есть куча вопросов, < /p>


[*] < Strong> Как компилятор выберет наилучший подходящий класс? /p>
[*] разве это не противоречило тому факту, что компилятор имеет нулевое iq? [/b]
< /ul>

заранее спасибо. < /p>

Подробнее здесь: https://stackoverflow.com/questions/250 ... ty-solving
Ответить

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

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

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

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

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