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

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

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

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

22.01.2014, 14:11. Просмотров 814. Ответов 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++
пытаюсь создать класс с параметрами по умолчанию(я да, надеюсь, что я не путаюсь в терминах) #include &lt;iostream&gt; class some { ...

Классы и конструктор по умолчанию/с параметрами - C++
Помогите пожалуйста! Необходимо сконструировать класс с заданным набором свойств. В данном случае, касс содержит следующие поля: продукт,...

Шаблон с 4-мя параметрами - C++
Добрый вечер. Подскажите как мне сделать шаблонную функцию с четырьмя параметрами. Т.е. должна быть функция в которой первый параметр...

Шаблон по умолчанию - C++
template &lt;typename T = int&gt; class A { public: A(){} }; int main(int argc, char *argv) {

Класс-шаблон создание конструктора по умолчанию - C++
Хочу создать класс-шаблон. Начал с создания конструктора по умолчанию, с этого же момента и началась проблема, причём такая, что смысл её...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,961
Записей в блоге: 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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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Эксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
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 возникли бы накладки с объявлением, а так большинство вещей указывается само или подстраивается под известные параметры шаблона. Итого - меньше текста, меньше ошибок, большая, по сравнению с отсутствием данной фишки, автоматизация.
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,961
Записей в блоге: 27
22.01.2014, 16:12 #6
Спасибо, буду знать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2014, 16:12
Привет! Вот еще темы с ответами:

Написать класс «массив» (В классе реализовать следующие методы: конструкторы (по умолчанию, с параметрами,) - C++
помогите пожалуйста! необходимо: 1. Написать класс «массив». 2. В классе реализовать следующие методы: конструкторы (по умолчанию, с...

Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно» - C++
Помогите пожалуйста, хоть с одним из заданий. 1. Создать класс. Написать конструктор по умолчанию, конструктор с параметрами....

Шаблоны функций, Ошибка: для использования класса шаблон требуется список аргументов шаблон - C++
Есть у меня 3 структуры Трамвай , Троллейбус , Автобус. Для автобуса определены функции (работают) Троллейбус и Трамвай одинаковые поля...

Ошибка при компиляции:"C2955 "Tree": для использования класс шаблон требуется список аргументов шаблон" - C++
Есть класс бинарного дерева, в нем структура. Класс - Tree, структура - list(листик, а не список). При компиляции выдает...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.01.2014, 16:12
Ответ Создать тему
Опции темы

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