- 论坛徽章:
- 0
|
以类对象作为变量传给函数,默认情况下按值传递。如类未自定义拷贝构造函数的情况下,就采用默认的按位复制),在调用函数结束释放对象备份时,调用了析构函数。小弟按书上的code测试了一下:
#include <iostream.h>
class point{
int x,y;
public:
point(int a,int b){
x=a;y=b;
cout<<"create point("<<x<<","<<y<<")"<<endl;
}
int rx(){return x;}
int ry(){return y;}
~point(){
cout<<"delete instance"<<endl;
}
};
point add(point m){
cout<<"use add"<<m.rx()<<","<<m.ry()<<endl;
int x=m.rx()+20;
int y=m.ry()+20;
point r(x,y);
return r;
}
void main(){
point N(10,12),L(0,0);
L=add(N);
cout<<"L:"<<L.rx()<<","<<L.ry()<<endl;
cout<<"N:"<<N.rx()<<","<<N.ry()<<endl;
}
运行结果,显示确实调用了析构函数,但为啥调用了三次,而不是一次(仅析构作为参数的那个对象)?当不重载析构函数的时候,也可以正确显示N的x,y值,那问大侠给解释一下。多谢。 |
|