As far as I know you call the copy constructor in the following cases: 1 When instantiating one object and initializing it with values from another object 2 When pas
Because of Return Value Optimization the 3rd test case's copy constructor call is optimized away by the compiler.