Parthsarthi Joshi Ответов: 1

Я не понимаю, как он объявил массив


// Пример универсального безопасного массива.
#include <iostream>
#включить <cstdlib>
использование пространства имен std;
const int SIZE = 10;
шаблон <class AType> class atype {
AType a[размер];
общественный:
дтип() {
зарегистрировать инт я;
для(i=0; i<SIZE; i++) a[i] = i;
}
AType &operator[](int i);
};
// Обеспечьте проверку диапазона для atype.
шаблон &ЛТ;класс Дтип&ГТ; &амп Дтип;дтип в<тип&ГТ;::оператор[](int я)
{
if(i<0 || i> SIZE-1) {
cout << "\nIndex значение ";
соиь <&ЛТ; я &Л;&Л; " - это вне границ.\северный";
выход(1);
}
возвращение[я];
}
тап_п()
{
atype<int> intob; // целочисленный массив
atype<double> doubleob; // двойной массив
int i;
cout << "целочисленный массив: ";
for(i=0; i<SIZE; i++) intob[i] = i;
для(Я=0; Я&л;размер; я++) соиь <&ЛТ; intob[я] &ЛТ;&ЛТ; " ";
cout << '\n';
cout << "двойной массив: ";
для(i=0; i<SIZE; i++) doubleob[i] = (double) i/3;
для(Я=0; Я&л;размер; я++) соиь <&ЛТ; doubleob[я] &ЛТ;&ЛТ; " ";
cout << '\n';
intob[12] = 100; // генерирует ошибку времени выполнения
возвращает 0;
}

Что я уже пробовал:

Я искал его в интернете.

saide_a

Твоя проблема мне не ясна,
существует массив фиксированного размера (10), и на некоторых шагах программы ему присваиваются значения

1 Ответов

Рейтинг:
2

OriginalGriff

Это дженерики: вы объявляете универсальный класс atype как принятие типа для каждого экземпляра при создании этого экземпляра, и он производит экземпляр, специфичный для этого типа.

Поэтому, когда ваш код говорит::

atype<int> intob;
то int рассказывает свое atype класс для создания массива целых чисел.
Пока:
atype<double> doubleob;
делает то же самое но с double ценности.

Это не то, что он; это легко объяснить в маленьком текстовом поле, так что если вы не понимаете, то самое время начать читать: Шаблоны - Учебники По C++ [^] и Руководство идиота по шаблонам C++ - Часть 1[^] являются хорошими отправными точками.