[求助]关于析构函数
class E {
int x;
public:
E( int a ) {x=a; cout<<"constructing : "<<x<<endl; }
~E( ) { cout<<"destructing : "<<x<<endl ;}
E( E &b ) { x=b.x;cout<<"copy : "<<x<<endl; }
};
void fn(E xe)
{ E f1(10), f2(f1);
}
void main( )
{ E e1(5), e2=e1;
fn(e1);
}
这个程序结果是:
constructing : 5
copy : 5
copy : 5
constructing : 10
copy : 10
destructing : 10
destructing : 10
destructing : 5
destructing : 5
destructing : 5
为什么输出两个copy : 5 ?
为什么后面要运行这么多次析构函数呢?
这块有什么规则呢?