Решение двусмысленности виртуальной функции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

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