V
Vivek Shah
Hi,
Given below is apiece of code which I was writing to clear my concepts
of copy constructor. I have a function f() which takes Class A object
through call by value and return the same object. Copy constructor is
called when we pass the argument by value and we return from the
function and also we initialize.
In the main function, I check the number of time the copy constructor
is called, I expect it to be 3
(1) parameter passing in f(a)
(2)return in f(a)
(3) initialization of c = f(a)
But it seems the copy constructor is called twice ..Why is that ?
static int num;
A::A(const A& A1)
{
cout<<" Inside COPY Constructor " <<++num <<endl;
}
const A f(const A z)
{
cout << "Inside Function" <<endl;
return(z);
}
int main()
{
A a(5);
A c = f(a); // c is initialized by return value of function f()
cout << num; // Shouldnt num be 3 ...it is giving 2
}
Regards
-Vivek Shah
Given below is apiece of code which I was writing to clear my concepts
of copy constructor. I have a function f() which takes Class A object
through call by value and return the same object. Copy constructor is
called when we pass the argument by value and we return from the
function and also we initialize.
In the main function, I check the number of time the copy constructor
is called, I expect it to be 3
(1) parameter passing in f(a)
(2)return in f(a)
(3) initialization of c = f(a)
But it seems the copy constructor is called twice ..Why is that ?
static int num;
A::A(const A& A1)
{
cout<<" Inside COPY Constructor " <<++num <<endl;
}
const A f(const A z)
{
cout << "Inside Function" <<endl;
return(z);
}
int main()
{
A a(5);
A c = f(a); // c is initialized by return value of function f()
cout << num; // Shouldnt num be 3 ...it is giving 2
}
Regards
-Vivek Shah