Конструктори за замовчуванням

Конструктори за замовчуванням не мають аргументів (або всі аргументи мають значення за замовчуванням). Конструктор за замовчуванням потрібен, коли створюється масив об’єктів даного класу з використанням оператора new.

 

class IntStack

{

// ...

IntStack(int = 20); //конструктор за замовчуванням

// ...

};

 

IntStack* p = new IntStack[5]; // Кожний елемент масиву має розмір 20

 

1.3. Конструктори копіювання

Конструктори копіювання мають один аргумент, що є посиланням чи константним посиланням на даний клас (або один аргумент, або інші аргументи мають значення за замовчуванням). Конструктор копіювання служить для створення об’єкта з іншого об’єкта того ж класу. Конструктор копіювання повинен бути визначений, якщо клас містить поля, що є покажчиками на пам’ять, що розподіляється динамічно.

 

class IntStack

{

// ...

public:

IntStack(int =10);

IntStack(const IntStack&);

// ...

};

 

IntStack::IntStack(const IntStack& from)

{

v = new int [size = from.size];

for(register int i=0; i<size; ++i)

v[i] = from.v[i];

top = from.top;

}

 

// ...

IntStack a(100);

IntStack b(a); //оголосити b, що дорівнює а

IntStack c = a; // те ж в альтернативній формі