line 8
如果有注释,则以下程序无法在 g++ 4.4 中编译。为什么?似乎当我重写std::exception
构造函数时,我也必须重写它的析构函数。这是什么原因?
#include<iostream>
#include<exception>
using namespace std;
class A : public exception {
public:
A(string msg) : _msg(msg) {}
//~A() throw(){}; // line 8
const char* what() const throw() { return _msg.c_str();}
private:
string _msg;
};
int main()
{
}
编译错误是:
error: looser throw specifier for ‘virtual A::~A()’