Читайте также:
|
|
class TShape {
protected:
Int visible;
public:
TShape(int _vis): visible(_vis) {}
virtual ~TShape() {}
virtual void Show() = 0;
int IsVisible() const {
return visible; }};
Класс TPoint
class TPoint: public TShape {
private:
Int x, y;
public:
TPoint(int _x, int _y, int _vis):
TShape(_vis), x(_x), y(_y) {}
void Show() {
if (!visible) {
printf("%d %d ", x, y);
visible = 1; }}};
Класс TCircle
class TCircle: public TPoint {
private:
Int r;
public:
TCircle(int _x, int _y, int _r, int _vis):
TPoint(_x, _y, _vis), r(_r) {}
void Show() {
if (!visible) {
TPoint::Show();
printf("%d ", r);}}};
Классы и шаблоны.
Шаблон семейства классов: template <список_параметров_шаблона> определение_класса
Шаблон семейства классов определяет способ построения отдельных классов подобно тому, как класс определяет правила построения и формат отдельных объектов. В определении класса, входящего в шаблон, особую роль играет имя класса. Оно является не именем отдельного класса, а параметризованным именем семейства классов.
Следуя авторам языка и компилятора Си++, рассмотрим векторный класс (в число данных входит одномерный массив). Какой бы тип ни имели элементы массива (целый, вещественный, с двойной точностью и т.д.), в этом классе должны быть определены одни и те же базовые операции, например доступ к элементу по индексу и т.д. Если тип элементов вектора задавать как параметр шаблона класса, то система будет формировать вектор нужного типа (и соответствующий класс) при каждом определении конкретного объекта.
Следующий шаблон автоматически формирует классы векторов с указанными свойствами:
// TEMPLATE.VEC - шаблон векторов
template <class T> // T - параметр шаблона
Дата добавления: 2015-10-02; просмотров: 43 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Void f (int); | | | Bay Area Thrash |