分页:
上一页 1 2 3 4 5 6 7 8 [9]
}
};
void main()
{
try
{
{
MyMemoryException ex_obj1("ex_obj1");
cout <<endl<< "抛出一个MyMemoryException类型的异常" <<endl<<endl;
throw ex_obj1;
}
}
// 注意这里发生了对象切片,异常对象e已经不是原原本本的那个被throw出
// 的那个对象了
catch(MyException e)
{
// 调用虚函数,验证一下这个异常对象是否真的发生了对象切片
cout<<endl<<e.Test_Virtual_Func()<<endl<<endl;
}
}
程序运行的结果是:
总结
(1) 被抛出的异常对象都是临时的局部变量;
(2) 异常对象至少要被构造三次;
(3) catch 后面带的异常对象的作用域仅限于catch bock中;
(4) 按值传递方式很容易发生异常对象的切片。
分页:
上一页 1 2 3 4 5 6 7 8 [9]