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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mariya93
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 9
#1

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

22.01.2014, 14:11. Просмотров 644. Ответов 5
Метки нет (Все метки)

Подскажите пожайлуста,что можно написать в коде вместо многоточий?

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

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++ Шаблон по умолчанию
Запуск .exe с параметрами? C++
Шаблон функции с параметрами по умолчанию C++
Класс-шаблон создание конструктора по умолчанию C++
Конструктор с параметрами C++
Функции с параметрами C++
Написать класс «массив» (В классе реализовать следующие методы: конструкторы (по умолчанию, с параметрами,) C++
C++ Конструктор с параметрами по умолчанию

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
 Аватар для Тамика
866 / 446 / 132
Регистрация: 16.02.2010
Сообщений: 2,665
Записей в блоге: 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
:)
Эксперт С++
4384 / 3227 / 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
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6228 / 3473 / 425
Регистрация: 29.11.2010
Сообщений: 9,178
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 возникли бы накладки с объявлением, а так большинство вещей указывается само или подстраивается под известные параметры шаблона. Итого - меньше текста, меньше ошибок, большая, по сравнению с отсутствием данной фишки, автоматизация.
Тамика
Котовчанин
 Аватар для Тамика
866 / 446 / 132
Регистрация: 16.02.2010
Сообщений: 2,665
Записей в блоге: 27
22.01.2014, 16:12     Шаблон с параметрами по умолчанию #6
Спасибо, буду знать.
Yandex
Объявления
22.01.2014, 16:12     Шаблон с параметрами по умолчанию
Ответ Создать тему
Опции темы

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