Considere el siguiente código:especificación de excepción al redefinir una función virtual
class A
{
public:
virtual void f() throw (int) { }
};
class B: public A
{
public:
void f() throw (int, double) { }
};
Cuando compilado, se dice que deriva de la clase B tiene un especificador de tiro más flojo en comparación con A. ¿Cuál es la importancia de esto? Si intentamos intercambiar su especificación de excepción, de modo que A :: f() arroje int y double, mientras que B :: f() solo arroja int, el error no aparece.
Sinceramente espero que nunca arroje instancias de clases que no están destinadas a ser usadas como excepciones y esto es solo por una rápida y sucia ilustración de su pregunta :) –
Matthieu: Ah, sí, por supuesto. Entiendo. – jasonline