![]() |
Показать все 3 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Почему С++ поддерживает два ключевых слова (https://hlfx.ru/forum/showthread.php?threadid=636)
Почему С++ поддерживает два ключевых слова
Почему С++ поддерживает два ключевых слова – class и typename как параметры типов
Недавно меня спросили, почему у нас поддерживаются и class, и typename в С++ для обозначения параметров типов, ведь они не несут никакой значимости для платформы – например, class может подразумевать нативный тип, а typename – тип CLI. Оба они используются для параметризации в шаблонах и заменяются на заданный пользователем тип.
Почему два ключевых слова? Потому что так исторически сложилось. В первоначальной спецификации шаблонов Страуструп повторно использовал имеющееся ключевое слово class для задания параметра типа, вместо того чтобы вводить новое ключевое слово, что могло бы испортить имеющиеся программы. Не то чтобы не хотелось ввести новое ключевое слово – просто не хотелось потенциально привнести ошибки. И вплоть до стандарта ISO-C++ это был единственный способ объявить параметр типа.
Повторное использование имеющегося ключевого слова всегда сеет неразбериху. Мы увидели, что начинающие программисты ограничиваются использованием классов в качестве параметров типов, но не встроенных типов или указателей. Так что, похоже, то что мы не ввели новое ключевое слово, было ошибкой.
Во время стандартизации мы обнаружили, что некоторые конструкции трактуются как выражения, в то время как предполагалось, что это объявления. Например:
1 | template <class T> |
2 | class Demonstration |
3 | { |
4 | public: |
5 | void method() |
6 | { |
7 | T::A *aObj; // oops... |
8 | //... |
9 | }; |
typename T::A* a6; // declare pointer to T’s A |
__________________
Я до прочтения сей статьи вообще не знал ключевого слова typename. Как говорилось где-то, C++ невозможно изучить полностью - все время узнаешь что-то новое.
нда. интересненько.
__________________
Рассыпалась соль - к ссоре.
Рассыпался сахар - к миру.
Рассыпался кокаин - к феерическим ощущениям и фантасмагорическим видениям.
Ласточки низко летают - будет дождь.
Коровы низко летают - рассыпался кокаин.
Временная зона GMT. Текущее время 19:25. | Показать все 3 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024