最近看到很多人讨论一个问题,颇感兴趣,于是在此作个记录
问题是这样的:
有类A的定义如下:
好,下面问题来了。注意看区别.
区别1:
void main()
{
A a;
A b=a ;//只拷贝,相当于 A b(a);
}
void main()
{
A a;
A b;
a=b;//先赋值,后拷贝
}
区别2:
void main()
{
A a;
A b=a ;//执行两次析构函数
}
void main()
{
A a;
A b;
a=b;//执行三次析构函数
}
上面第二种情况会先产生一个临时对象,它相当于:
void main()
{
A b;
A temp=b;
A a=temp;
}
三个对象,当然要析构三次了