C++异常对象的传递
Posted 论睡不着与不想睡的区别
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++异常对象的传递相关的知识,希望对你有一定的参考价值。
异常链中的对象似乎是由异常机制独立维护,而不是throw后面的对象,下面的程序调用了两次复制构造函数
static int c = 0;
class MyException
int id;
public:
MyException() : id(c++)
cout << "MyException()---------------" << id << endl;
MyException(MyException&) : id(c++)
cout << "MyException(MyException&)---" << id << endl;
void print_error()
cout << "MyException::print_error()--" << id << endl;
~MyException()
cout << "~MyException()--------------" << id << endl;
;
void f()
MyException e;
throw e;
int main()
try
f();
catch(MyException e)
e.print_error();
return 0;
运行结果
结果分析:
id为0的是f()函数中的局部MyException对象
id为1的是异常机制维护的MyException对象
id为2的是main()函数中的局部MyException对象
以上是关于C++异常对象的传递的主要内容,如果未能解决你的问题,请参考以下文章