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

Шаблон с параметрами по умолчанию - C++

Восстановить пароль Регистрация
 
Mariya93
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 9
22.01.2014, 14:11     Шаблон с параметрами по умолчанию #1
Подскажите пожайлуста,что можно написать в коде вместо многоточий?

Шаблон можно переписать с параметрами по умолчанию как для целого аргумента, так и для типа. Например:

C++
1
2
3
4
template <class T= int, int n= 100>
class array_n {
........
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2014, 14:11     Шаблон с параметрами по умолчанию
Посмотрите здесь:

Конструктор с параметрами C++
C++ конструктор с параметрами
C++ Программа с параметрами
C++ Шаблон по умолчанию
Шаблон функции с параметрами по умолчанию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
22.01.2014, 14:25     Шаблон с параметрами по умолчанию #2
C++
1
template <class T= int, int n= 100>
Непонятная строка. Шаблоны используются для того, чтобы можно было подставлять любой тип вместо Т. А Вы здесь пишете что-то страшное... Определяете Т как int. Тогда вся его многогранность исчезает. Если ошибаюсь - поправьте меня.
Mariya93
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 9
22.01.2014, 14:42  [ТС]     Шаблон с параметрами по умолчанию #3
в методичке был такой пример:
C++
1
2
3
4
5
6
7
template <class T,int n>
class array_n {
.......
private:
  T items[n]; //n - явно инстанцируется
};
  array_n<complex,1000> w; //w - массив комплексных чисел
и в следующем пункте:
Шаблон, рассмотренный выше в примере, можно переписать с параметрами по умолчанию как для целого аргумента, так и для типа.
Например:
C++
1
2
3
4
template <class T= int, int n= 100>
class array_n {
........
};
и меня попросили написать то,что может быть дальше вместо многоточий....
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
22.01.2014, 15:13     Шаблон с параметрами по умолчанию #4
Mariya93, непонятно чего от Вас хотят, если честно.
Может варианты использования?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template <class T=int,int n=1000>
class array_n {
private:
  T items[n]; 
};
 
int main() {
 
    array_n<double,2000> w; // double, 2000
    array_n<double> w2; // double, 1000
    array_n<> w3; // int, 1000
 
    return 0;
}
Цитата Сообщение от Тамика Посмотреть сообщение
. Определяете Т как int. Тогда вся его многогранность исчезает.
Параметры шаблонов по умолчанию, сродни параметрам функций по умолчанию. Если параметр не задан явно, то использовать тот, который указан по умолчанию. Это бывает полезно, если в подавляющем большинстве случаев параметр имеет одно и то же значение, но всё же надо иметь возможность его менять.

Mariya93, кстати, возможно всё-таки надо написать методы доступа (т.е. public-секцию). Иначе использовать данный класс не получится. Правда это уже никак не относится к теме "параметры по умолчанию".
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
22.01.2014, 15:35     Шаблон с параметрами по умолчанию #5
Кстати, параметры по-умолчанию используются повсеместно. Вы бы очень мучились, каждый раз задавая все параметры.
Пример:
C++
1
2
3
template <class charT, class traits = char_traits<charT> >
  class basic_istream;
typedef basic_istream<char> istream;
istream, например это basic_istream<char, char_traits<char>> Но тут нам еще повезло - typedef есть. А вот для итераторов:
C++
1
2
3
template <class T, class charT=char, class traits=char_traits<charT>, 
          class Distance = ptrdiff_t>
  class istream_iterator;
уже при желании использовать их с параметром типа int возникли бы накладки с объявлением, а так большинство вещей указывается само или подстраивается под известные параметры шаблона. Итого - меньше текста, меньше ошибок, большая, по сравнению с отсутствием данной фишки, автоматизация.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
22.01.2014, 16:12     Шаблон с параметрами по умолчанию #6
Спасибо, буду знать.
Yandex
Объявления
22.01.2014, 16:12     Шаблон с параметрами по умолчанию
Ответ Создать тему
Опции темы

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