5.1 如果 MyException e,会多开销一份数据 ,调用拷贝构造
5.2 如果 MyExcepiton *e , 不 new提前释放对象 new 自己管理delete
5.3 推荐 MyException &e 容易些 而且 就一份数据
MyException e
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
#if(0)
class myExecption {
public:
myExecption() {
cout << "默认构造函数调用..." << endl;
}
myExecption(const myExecption& e) {
cout << "拷贝构造函数调用..." << endl;
}
~myExecption() {
cout << "析构函数调用..." << endl;
}
};
void doWork() {
throw myExecption();
}
void test01() {
try {
doWork();
}
catch (myExecption e) {
cout << "异常" << endl;
}
}
int main(){
test01();
system("pause");
return 0;
}
#endif
MyExcepiton *e , 不 new
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
#if(1)
class myExecption {
public:
myExecption() {
cout << "默认构造函数调用..." << endl;
}
myExecption(const myExecption& e) {
cout << "拷贝构造函数调用..." << endl;
}
~myExecption() {
cout << "析构函数调用..." << endl;
}
};
void doWork() {
throw &myExecption();
}
void test01() {
try {
doWork();
}
catch (myExecption *e) {
cout << "异常" << endl;
}
}
int main() {
test01();
system("pause");
return 0;
}
#endif
MyExcepiton *e , 不new
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
#if(1)
class myExecption {
public:
myExecption() {
cout << "默认构造函数调用..." << endl;
}
myExecption(const myExecption& e) {
cout << "拷贝构造函数调用..." << endl;
}
~myExecption() {
cout << "析构函数调用..." << endl;
}
};
void doWork() {
throw new myExecption();
}
void test01() {
try {
doWork();
}
catch (myExecption *e) {
cout << "异常" << endl;
delete e;
}
}
int main() {
test01();
system("pause");
return 0;
}
#endif
MyException &e
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
#if(1)
class myExecption {
public:
myExecption() {
cout << "默认构造函数调用..." << endl;
}
myExecption(const myExecption& e) {
cout << "拷贝构造函数调用..." << endl;
}
~myExecption() {
cout << "析构函数调用..." << endl;
}
};
void doWork() {
throw myExecption();
}
void test01() {
try {
doWork();
}
catch (myExecption &e) {
cout << "异常" << endl;
}
}
int main() {
test01();
system("pause");
return 0;
}
#endif