Почему у C ++ нет «чистого» ключевого слова для виртуальных функций?

Я всегда задавался вопросом, почему мы кодируем

virtual void MyFunction() = 0; 

, а не

pure virtual void MyFunction();

Есть ли ссылка для основания этого решения?

31 голос | спросил Mawg 20 Mayam15 2015, 11:53:06

1 ответ


71

Из Дизайн и эволюция C ++ - Бьярне Страуструп - Аддисон-Уэсли (ISBN 0-201-54330-3 ) - глава 13.2.3:

  

Любопытный синтаксис = 0 был выбран по очевидной альтернативе введения нового ключевого слова pure или abstract, потому что в то время я не видел шансов получить новое ключевое слово. Если бы я предложил pure, выпуск 2.0 отправил бы без абстрактных классов. Учитывая выбор между более сильным синтаксисом и абстрактными классами, я выбрал абстрактные классы. Вместо того, чтобы рисковать задержкой и совершать определенные бои над pure, я использовал традицию C и C ++ соглашение об использовании 0 для представления not есть .

В любом случае, глядя на стандарт C ++ (§ 9.2 - члены класса) = 0 называется pure-specifier .

ответил manlio 20 Mayam15 2015, 11:58:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132