atype
int i;
cout << "Массив целых чисел: ";
for(i=0; i<10; i++) intob[i] = i;
for(i=0; i<10; i++) cout << intob[i] << " ";
cout << '\n';
cout << "Массив double-значений: ";
for(i=0; i<15; i++) doubleob[i] = (double) i/3;
for(i=0; i<15; i++) cout << doubleob[i] << " ";
cout << '\n';
intob[12] = 100; // ошибка времени выполнения!
return 0;
}
Рассмотрим внимательно
На тип параметров, которые не представляют типы, налагаются ограничения. В этом случае разрешено использовать только целочисленные типы, указатели и ссылки. Другие типы (например, float) не допускаются. Аргументы, которые передаются параметру, не являющемуся типом, должны содержать либо целочисленную константу, либо указатель или ссылку на глобальную функцию или объект. Таким образом, эти "нетиповые" параметры следует рассматривать как константы, поскольку их значения не могут быть изменены. Например, в теле функции
size = 10; // ошибка
Поскольку параметры-
Как показывает пример создания безопасного массива, использование
Шаблонный класс
Шаблонный класс может по умолчанию определять аргумент, соответствующий обобщенному типу. Например, в результате такой
template
class myclass { //...
};
будет использован тип
Для аргументов, которые не представляют тип в
Рассмотрим еще одну версию класса безопасного массива, в котором используются аргументы по умолчанию как для типа данных, так и для размера массива.
// Демонстрация использования шаблонных аргументов по умолчанию.
#include
#include
using namespace std;
/* Здесь параметр AType по умолчанию принимает тип int. а параметр size по умолчанию устанавливается равным 10.
*/
template
class atype{
AType a[size]; // Через параметр size передается размер массива.
public:
atype() {
register int i;
for(i=0; i
}
AType &operator[](int i);
};
// Обеспечение контроля границ для класса atype.
template
AType &atype
{
if( i<0 || i> size-1) {
cout << "\n Значение индекса ";
cout << i << " за пределами границ массива.\n";
exit(1);
}