69,368
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class MyException{
public:
MyException()
{cout <<"construction" <<endl;}
MyException(MyException &)
{cout <<"copy construction" <<endl;}
void show()
{cout <<"...MyException..." <<endl;}
~MyException()
{cout <<"~construction" <<endl;}
};
void fun(){
throw MyException();
}
int main(int argc, char *argv[]){
try{
fun();
}
catch(MyException &e){
e.show();
}
return 0;
}
construction
...MyException...
~construction
try{
fun();
}catch(MyException e){
e.show();
}
return 0;
try{
fun();
}catch(MyException & e){
e.show();
}
return 0;
#include <iostream>
using namespace std;
class MyException{
public:
MyException(){cout <<"construction" <<endl;}
MyException(const MyException& me)
{
cout<<"fff"<<endl;
}
void show(){cout <<"...MyException..." <<endl;}
~MyException(){cout <<"~construction" <<endl;}
};
void fun(){
throw MyException();
}
int main(int argc, char *argv[]){
try{
fun();
}catch(MyException e){
e.show();
}
return 0;
}
//MinGW
#include <iostream>
using namespace std;
class MyException{
public:
MyException(){cout <<"construction" <<endl;}
void show(){cout <<"...MyException..." <<endl;}
~MyException(){cout <<"~construction" <<endl;}
};
void fun(){
throw MyException();
}
int main(int argc, char *argv[]){
try{
fun();
}catch(MyException e){ //这里调用的不是你提供的默认构造函数,而是它的默认拷贝构造函数
e.show();
}
return 0;
}
//结果:
/****************************/
/*construction
...MyException...
~construction
~construction
Terminated with return code 0
Press any key to continue ...*/
/****************************/
//MinGW
#include <iostream>
using namespace std;
class MyException{
public:
MyException(){cout <<"construction" <<endl;}
void show(){cout <<"...MyException..." <<endl;}
~MyException(){cout <<"~construction" <<endl;}
};
void fun(){
throw MyException();
}
int main(int argc, char *argv[]){
try{
fun();
}catch(MyException e){
e.show();
}
return 0;
}
结果:
/****************************/
construction
...MyException...
~construction
~construction
Terminated with return code 0
Press any key to continue ...
/****************************/