Нужно ли явно определять конструктор по умолчанию, когда мы определяем конструктор копирования для класса? Просьба привести причины.
например:
class A
{
int i;
public:
A(A& a)
{
i = a.i; //Ok this is corrected....
}
A() { } //Is this required if we write the above copy constructor??
};
Кроме того, если мы определяем любой другой параметризованный конструктор для класса, отличного от конструктора копирования, нам также нужно определить конструктор по умолчанию? Рассмотрим приведенный выше код без конструктора копирования и замените его на
A(int z)
{
z.i = 10;
}
Alrite.... После просмотра ответов я написал следующую программу.
#include <iostream>
using namespace std;
class X
{
int i;
public:
//X();
X(int ii);
void print();
};
//X::X() { }
X::X(int ii)
{
i = ii;
}
void X::print()
{
cout<<"i = "<<i<<endl;
}
int main(void)
{
X x(10);
//X x1;
x.print();
//x1.print();
}
И если эта программа работает нормально без конструктора по умолчанию. Пожалуйста, объясните, почему это так? Я действительно смущен концепцией.....