Конструктори за замовчуванням не мають аргументів (або всі аргументи мають значення за замовчуванням). Конструктор за замовчуванням потрібен, коли створюється масив об’єктів даного класу з використанням оператора 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; // те ж в альтернативній формі