Что означает, что оператор преобразования «все еще действителен»? в производном классе

class Game {
class Other {}; // Nested class
// Automatic type conversion:
operator Other() const {
cout << "Game::operator Other()\n";
return Other();
}
};
class Chess : public Game {};
void f(Game::Other) {}
int main()
{
Chess d;
f(d);
}

Я читаю главу 14 «Мышление на С ++» — функции, которые не наследуются автоматически.
Приведенный выше фрагмент кода является примером, данным Эккелем. И Экель сказал:

«Из-за всех этих правил о переписывании функций, которые обрабатывают
создание объекта, на первый взгляд может показаться странным, что
Оператор автоматического преобразования типов наследуется. Но это не слишком
неразумно — если в игре достаточно фигур, чтобы сделать другого
объект, эти части все еще есть во всем, что происходит от Game и
оператор преобразования типов все еще действует (хотя вы можете
факт хочу переопределить это).

Я не понимаю, что пытается сказать Экель. Кто-нибудь может объяснить это более подробно?

Спасибо

1

Решение

Он говорит, что, в отличие от некоторых других подобных вещей, операторы преобразования типов являются автоматически наследуется производными классами.

Его аргумент о том, почему это поведение является разумным, заключается в том, что если вы можете построить Other из GameВы также можете построить Other от всего, что «является» Game (т.е. производный класс).

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]