Это потому, что все члены команды C # являются опытными программистами C ++. И знаете, насколько зарождается эта конкретная ошибка:
class Base {
protected:
virtual void Mumble(int arg) {}
};
class Derived : public Base {
protected:
// Override base class method
void Mumble(long arg) {}
};
Это гораздо чаще, чем вы думаете. Производный класс всегда объявляется в другом файле исходного кода. Как правило, вы не сразу ошибаетесь, это происходит при рефакторинге. Никаких писем от компилятора, код работает довольно нормально, просто не делает то, что вы ожидаете. Вы можете посмотреть на это час или день и не увидеть ошибку.
Этого никогда не случится в программе на C #. Даже управляемый C ++ принял этот синтаксис, преднамеренно нарушая собственный синтаксис C ++. Всегда смелый выбор. IntelliSense избавляет от лишних слов.
В C # есть множество доработок синтаксиса, которые напоминают синтаксис такого рода для избежания ошибок.
РЕДАКТИРОВАТЬ: и остальное сообщество C ++ согласилось и приняло ключевое слово override в новой спецификации языка C ++ 11.