メイン関数の最後の行で関数 func の戻り呼び出しに対してコピーコンストラクターが呼び出されないのはなぜですか..値でパラメーターを送信するときに呼び出されますが、値を返すときは呼び出されません
class A
{
public:
int x , y , z;
A(int x=4 , int y=2 , int z=1)
{
this->x = x;
this->y = y;
this->z = z;
}
A(A& a)
{
x = a.x;
y = a.y;
z = a.z;
printf("Copy Constructor called\n");
a.x++;
}
//not a copy constructor
A(A *a)
{
x = a->x;
y = a->y;
z = a->z;
printf("Some Constructor called\n");
(a->x)++;
}
void tell() { printf("x=%d y=%d z=%d\n" , x , y , z);}
};
A func()
{
A a;
return a;
}
int main()
{
A a1;
a1=func(); //why is copy constructor not called while returning
a1.tell();
return 0;
}