#include <iostream>
using namespace std;
class MyClass{
int val;
public:
MyClass(int i){
val=i;
cout<<"inside constructor \n";
}
int getval(){return val;}
~MyClass() { cout<<"Destructor\n";}
MyClass MkBigger(){
MyClass o(val*2);
return o;
}
};
void display(MyClass ob)
{ cout<<ob.getval()<<endl;}
main(){
MyClass a(10); //调用构造函数
cout<<"Before calling display().\n";
display(a);//display中有个对象,发生一次析构
a=a.MkBigger();//发生两次析构
cout<<"after display returns.\n";//对象a析构
using namespace std;
class MyClass{
int val;
public:
MyClass(int i){
val=i;
cout<<"inside constructor \n";
}
int getval(){return val;}
~MyClass() { cout<<"Destructor\n";}
MyClass MkBigger(){
MyClass o(val*2);
return o;
}
};
void display(MyClass ob)
{ cout<<ob.getval()<<endl;}
main(){
MyClass a(10); //调用构造函数
cout<<"Before calling display().\n";
display(a);//display中有个对象,发生一次析构
a=a.MkBigger();//发生两次析构
cout<<"after display returns.\n";//对象a析构
}
VC下编译结果:
分析: