Skip to main content

Operator Overloading

Question Text

How many constructor calls, copy constructor calls, assignment operator calls and destructor calls does the following program issue?

Obj quiz(Obj o1, Obj o2)
{
o2 = o1;
return o2;
}
void main()
{
Obj b = quiz(o1, o2);
}

Question Answers

  • constructor calls = 0, copy constructor calls = 3, assignment operator calls = 1, destructor calls = 3
  • constructor calls = 1, copy constructor calls = 2, assignment operator calls = 1, destructor calls = 2

  • constructor calls = 0, copy constructor calls = 2, assignment operator calls = 1, destructor calls = 2

  • constructor calls = 0, copy constructor calls = 3, assignment operator calls = 1, destructor calls = 1

Feedback

  • There are no constructor calls because there is no object construction when using int.
  • There are 3 copy constructor calls: for passing o1, for passing o2, and for returning o2.
  • There is 1 assignment operator call for o2 = o1.
  • There are 3 destructor calls, because each constructed object needs to be destroyed.