Следующая программа не компилируется в g++ 4.4, если line 8
прокомментирован. Зачем? Кажется, что когда я переопределяю конструктор 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()’