Q0:
No, ip2 is already constructed. So only copy constructor is called.
If it was IniPart ip = IniPart(10); default constructor might be called (I do not remember what standard says)
Q1:
Correct
Q2:
You need to allocate array (as in default constructor) copy all elements of array in a to your new class and copy all variables. Also you should set size variable in your constructors, so you will know size of your array.
1 2 3 4 5 6
IntPart::IntPart(const IntPart& a)
{
size = a.size;
numParts = a.numParts;
//allocate array of size size here and copy all values.
}
Q3:
Assign all variables of this like in copy constructor. Do not forget to allocate new array instead of copying the pointer.