Форум программистов, компьютерный форум CyberForum.ru

Typename и Class - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
29.08.2012, 21:02     Typename и Class #1
Между записью
C++
1
template <class T>
и
C++
1
template <typename T>
нет никакой разницы?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.08.2012, 21:02     Typename и Class #2
Никакой
-=ЮрА=-
Заблокирован
Автор FAQ
29.08.2012, 21:41     Typename и Class #3
Dani,
Ключевое слово typename появилось сравнительно недавно, поэтому стандарт[1] допускает использование class вместо typename:
http://ru.wikipedia.org/wiki/Шаблоны_C%2B%2B
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
29.08.2012, 21:46     Typename и Class #4
прочти эту ветку
http://stackoverflow.com/questions/2...ate-parameters
KostyaKulakov
Заблокирован
29.08.2012, 22:02     Typename и Class #5
разницы некакой.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
29.08.2012, 23:27     Typename и Class #6
Структуру можно оформить в виде класса с публичными полями и наоборот класс можно замутить с ключевым словом struct и правильно расставить там квалификаторы доступа. за исключением маленькой разницы в правилах наследования от структур и классов и еще кое-каких деталек разницы между классом и структурой нет. однако в одних случаях используют одно, в других - другое. Как правило выбор того или иного ключевого слова делается на основе семантики (предназначения) объявляемого типа данных.
Точно так же выбор typename иди class можно делать в зависимости от предназначения этого агрумента шаблона. Я typename предпочитаю использовать тогда, когда для шаблона подходит любой тип (все встроенные и пользовательские), а class - когда только невстроенные типы. Компилятору вроде бы все равно.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.08.2012, 23:33     Typename и Class #7
Цитата Сообщение от Dani Посмотреть сообщение
Между записью
C++
1
template <class T>
и
C++
1
template <typename T>
нет никакой разницы?
разница есть только для шаблонного параметра шалона
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <vector>
 
template< typename T, template< typename, typename = std::allocator<T>> class Con>
void foo();
 
//template< typename T, template< typename, typename = std::allocator<T>> typename Con> //error
//void foo()
 
int main()
{
   foo<int, std::vector>();
}
 
template< typename T, template< typename, typename = std::allocator<T>> class Con>
void foo()
{
   Con<T> vec;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2012, 23:40     Typename и Class
Еще ссылки по теме:

C++ Шаблоны. Что лучше <class T> или <typename T>?
C++ Template<typename T> vs auto
C++ Как програмно показать разницу между typename и class в шаблонных классах?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
29.08.2012, 23:40     Typename и Class #8
typename выполняет специальную функцию в шаблонном программировании, когда требуется явно сказать компилятору, что некоторое выражение именует тип.
Пример:
C++
1
2
3
4
5
6
7
8
template< class T >
void printContainer( T& container )
{
    typedef typename T::iterator container_iterator;
    for ( container_iterator it = container.begin(); it != container.end(); ++it ) {
        Log << *it;
    }
}
Yandex
Объявления
29.08.2012, 23:40     Typename и Class
Ответ Создать тему
Опции темы

Текущее время: 01:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru