ВУЗ:
Составители:
Рубрика:
ются способы конструирования объектов по различным исходным
данным.Вот довольно реалистичный класс строк 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
- …
- следующая ›
- последняя »