ВУЗ:
Составители:
Рубрика:
ются способы конструирования объектов по различным исходным
данным.Вот довольно реалистичный класс строк string.В нем
производится учет ссылок на строку с целью минимизировать ко-
пирование полей данных.Класс имеет три конструктора и две
операции присваивания,учитывающие разнообразие типов данных:
class string /*-класс объектов из строк и счетчиков: */
{ struct srep /*-представление строки данных: */
{ char* s;/*-указатель строки данных; */
int n;/*-счетчик числа ссылок строки; */
};/*-конец определения типа структуры; */
srep* p;/*-указатель на представляющую структуру; */
public:
string(); /*-конструктор с пустыми данными; */
string(char*); /*-конструктор по строке данных; */
string(string&);/*-конструктор по объекту string; */
string& operator=(char*); /*-присваивание данных;*/
string& operator=(string&);/*-присваивание объекта*/
~string(); /*-деструктор класса; */
}; /*-конец определения класса объектов string; */
string::string() /*-конструктор с пустыми данными; */
{ p=new srep;/*-выделение места для s и n; */
p->s=0;/*-нулевой указатель(нет данных); */
p->n=1;/*-данный объект ссылается на s; */
} /*-конец определения пустого конструктора;*/
string::string(char*s)/*-конструктор по строке данных; */
{ p=new srep;/*-выделение места для s и n; */
p->s=new char[strlen(s)+1];/*-для данных; */
strcpy(p->s,s);/*-копирование данных; */
p->n=1;/*-данный объект ссылается на s; */
} /*-конец определения конструктора char*; */
string::string(string& x) /*-конструктор-копия объекта; */
{ x.p->n++;/*-учет ссылок в объекте x; */
p=x.p;/*-новый объект - это ссылка на па- */
/* ру: данные - счетчик объекта x; */
} /*-конец определения конструктора копии; */
33
ются способы конструирования объектов по различным исходным
данным.Вот довольно реалистичный класс строк string.В нем
производится учет ссылок на строку с целью минимизировать ко-
пирование полей данных.Класс имеет три конструктора и две
операции присваивания,учитывающие разнообразие типов данных:
class string /*-класс объектов из строк и счетчиков: */
{ struct srep /*-представление строки данных: */
{ char* s;/*-указатель строки данных; */
int n;/*-счетчик числа ссылок строки; */
};/*-конец определения типа структуры; */
srep* p;/*-указатель на представляющую структуру; */
public:
string(); /*-конструктор с пустыми данными; */
string(char*); /*-конструктор по строке данных; */
string(string&);/*-конструктор по объекту string; */
string& operator=(char*); /*-присваивание данных;*/
string& operator=(string&);/*-присваивание объекта*/
~string(); /*-деструктор класса; */
}; /*-конец определения класса объектов string; */
string::string() /*-конструктор с пустыми данными; */
{ p=new srep;/*-выделение места для s и n; */
p->s=0;/*-нулевой указатель(нет данных); */
p->n=1;/*-данный объект ссылается на s; */
} /*-конец определения пустого конструктора;*/
string::string(char*s)/*-конструктор по строке данных; */
{ p=new srep;/*-выделение места для s и n; */
p->s=new char[strlen(s)+1];/*-для данных; */
strcpy(p->s,s);/*-копирование данных; */
p->n=1;/*-данный объект ссылается на s; */
} /*-конец определения конструктора char*; */
string::string(string& x) /*-конструктор-копия объекта; */
{ x.p->n++;/*-учет ссылок в объекте x; */
p=x.p;/*-новый объект - это ссылка на па- */
/* ру: данные - счетчик объекта x; */
} /*-конец определения конструктора копии; */
33
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »
