Вот стартовый код. Вопрос: Как бы вы определили ИЛИ сделать вызов метода из класса overcraft для производства BEEP!Множественное наследование в ориентированном объекте C++ C++ 11
class Vehicle {
public:
virtual void honk() = 0;
};
class Car : public Vehicle {
public:
void honk() { cout << "Beep!"; }
};
class Boat : public Vehicle {
public:
void honk() { cout << "Toot!"; }
};
class Hovercraft : public Car, public Boat {
public:
// ...
};
А вот потенциалы решения даны мне: (это может быть один для всех ответов возможных)
Добавить использованием Судно на воздушной подушке :: автомобилей :: гудок; на глобальном уровне программы или в функции, в которой мы хотим позвонить
добавить автомобиль Car :: honk; in Hovercraft класс
добавить автомобиль Car :: honk(); в классе воздушных судов на воздушной подушке
Автомобиль * c (новый Hovercraft()); C-> гудок(); delete c;
Hovercraft h; h.Car::honk();
Hovercraft h; Автомобиль :: h.honk();
Там нет ничего, чтобы сделать, порядок наследования в любом случае автомобиль :: гудок() вызывается, когда мы сигналить() вызов из воздушной подушке
Определить в Overcraft на гудок() метод, который называют автомобиль :: honk()
Для меня ... 3 и 6 являются ложными в любом случае. Я прав? Я бы выбрал 2 и 5, но когда я отправлю эти варианты, вопрос не удался. Я могу попробовать столько, сколько хочу, но я хотел бы лучше понять каждую комбинацию ...
Извините за ошибку перевода. Надеюсь, ты меня научишь.
http://stackoverflow.com/questions/21558/in-c-what-is-a-virtual-base-class, возможно, это могло бы помочь. –
Как насчет того, чтобы попробовать каждое предложение? Были ли те, которые вы выберете, должны вести себя по мере необходимости? Были ли те, которые вы бы не выбрали, не вели себя должным образом? Если вы не понимаете, почему какое-то конкретное решение ведет себя так, как показано на рисунке, то покажите нам полную программу, в которой используется решение, описывают поведение и какое поведение вы ожидали. – user2079303
В дополнение к тем, которые вы заметили, есть еще один правильный вариант. (И это самый очевидный.) – molbdnilo