在析构专题

条款09:绝不在析构和构造中调用virtual函数

1.为什么 #include<iostream>using namespace std;class Transaction//交易信息类{Transaction();virtual void logTransaction()const = 0;//交易日志};Transaction::Transaction(){logTransaction();}class BuyTransactio

不能在析构函数里面抛出异常

从语法上面讲,析构函数抛出异常是可以的,C++并没有禁止析构函数引发异常,但是C++不推荐这一做法,从析构函数中抛出异常是及其危险的。 析构函数可能在对象正常结束生命周期时调用,也可能在有异常发生时从函数堆栈清理时调用。前一种情况抛出异常不会有无法预料的结果,可以正常捕获;但后一种情况下,因为函数发生了异常而导致函数的局部变量的析构函数被调用,析构函数又抛出异常,本来局部对象抛出的异常应该是