Информатика и технология программирования


Создание и уничтожение объектовКонструкторы и деструкторы - часть 2


&#35include &#60dos.h&#62
static int days[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };


class dat
{
int day,month,year;
public:
dat(int=0,int=0,int=0); // Конструктор с параметрами


// (возможно умолчание)


dat(char *); // Конструктор с одним параметром


~dat(); // Деструктор


};
//------- Конструктор с параметром - текстовая строка -----


dat::dat(char *s)
{
int i;
char ss[80];
strcpy(ss,s);
for (i=0; ss[i] !=0; i++)
if (ss[i]=='-') ss[i]=','; // Замена '-' на ','


sscanf(ss,"%d%d%d",&#38day,&#38month,&#38year);
}
//------ Конструктор с тремя параметрами ------------------


// (по умолчанию 0 - текущая дата)


dat::dat(int d=0, int m=0, int y=0)
{
struct date x;
getdate(&#38x); // Стандартная функция получения текущей даты


// Проверка на значение по умолчанию


year = (y == 0) ? x.da_year : y;
month= (m == 0) ? x.da_mon : m;
day = (d == 0) ? x.da_day : d;
}
//------ Деструктор --------------------------------------


dat::~dat()
{
cout &#62&#62 "Дата ==&#62" &#62&#62 day &#62&#62 " -" &#62&#62 month &#62&#62 " -" &#62&#62 year;
}
//----------------------------------------------------------


dat a("12-12-1990"); // Внешний объект - конструктор


// вызывается перед main()


dat b[10]; // Массив объектов - конструктор без


// параметров вызывается перед main()


void xxx(dat &#38p)
{
dat c(12,12); // Вызывается конструктор dat(int,int,int)


// для автоматического объекта


dat d = p; // Конструктор для автоматического объекта не


// вызывается, т.к. объект инициализируется


} // копированием


// При выходе из функции вызываются


void main() // деструкторы для объектов c и d


{ int i,n;
cin &#60&#60 n;
dat *p = new dat[n]; // Создание массива динамических объектов -


// конструктор без параметров явно вызывается


// n раз


delete [n] p; // Уничтожение массива динамических объектов -


// деструктор явно вызывается n раз


} // Деструкторы для a и b[10] вызываются после


// выхода из main()




Начало  Назад  Вперед



Книжный магазин