Q0. No, this calls the copy constructor only. That's a pretty big misunderstanding, objects are only ever constructed once.
Q1. That's correct
Q2. Presumably you are meant to store the array size in size
. E.g.
IntPart::IntPart()
{
Counts = new int[101] (); // allocate all to 0s
numParts = 0;
size = 101; // save array size
}
If you don't store the array size somewhere, your copy constructor will be impossible to write.
Q3. I would look up the copy and swap idiom. This lets you write the assignment operator using the copy constructor.