There are two type of object initialisation using copy constructor:
Class object2(val1, val2); // <--- (1)
Same can be done by copying the contents of another class:
Class object1(val1, val2);
Class object2 = object1; // <--- (2)
What is the difference between (1) and (2) ? Are they explicit calls and implicit calls or does it have to do with operator overloading?