
第6集对象的成员函数中抛出的异常.docx
5页 第6集对象的成员函数中抛出的异常{public:MyTest_Base (string name = “”) : m_name(name){cout << “构造一个MyTest_Base类型的对象,对象名为:”< 因此前面说的“C++特别处理模型对面对对象供应了支持和兼容”是有依据的而且留意它的析构函数是在特别处理模块之前执行的,这一点更与C++标准中规定的面对对象的特性是全都的,当对象出了作用域时,它就必需要被析构 2、把上面的程序小改一下,运行再看结果,如下: void main() {// obj1对象不在trycatch域中,留意它的析构函数在什么时候被执行?MyTest_Base obj1(“obj1”);try{// obj2和obj3对象都在trycatch域中,其中obj3.Func()函数被调用,因此// obj3会抛出特别,特殊需要留意的是,obj2的析构函数会被执行吗?假如// 会,又是在什么时候被执行呢?MyTest_Base obj2(“obj2”), obj3(“obj3”); obj3.Other(); // 调用这个成员函数将抛出一个特别 obj3.Func(); // 留意:obj4对象在构造之前,函数中就有特别抛出所以obj4对象将不会 // 被构造,固然也不会被析构MyTest_Base obj4(“obj4”);obj3.Other();}catch(std::exception e){cout << e.what() << endl;}catch(...){cout << “unknow exception”<< endl;}} 上面的程序也难看出其运行结果,如下: 构造一个MyTest_Base类型的对象,对象名为:obj1 。
