Acerca de las clases de C ++ con referencia propia
Estoy un poco confundido ...
¿Por qué se permite esto en C ++:
static int t = 0;
class A
{
public:
A() : m(t++)
{
cout << "C:" << m << endl;
if(t >= 5)
{
A a; // <<<< ----- THIS line
throw( a);
}
}
int m;
};
Pero esto no:
static int t = 0;
class A
{
public:
A() : m(t++)
{
cout << "C:" << m << endl;
}
A a; // <<<< ----- THIS line
int m;
};
El segundo no se está compilando como se esperaba (sí, sé por qué no se está compilando: en ese punto del código, elA
aún está incompleto) ...
Pero ... el primero se compila muy bien (y hace lo que se supone que debe hacer, es decir: bloquea la aplicación en una declaración como:A a[10];
) Es elA
¿Un tipo completo en el constructor? ¿También puede señalarme algunas entradas estándar de C ++ para esta situación?