О классах C ++ с самостоятельной ссылкой
Я немного смущен ...
Почему это разрешено в 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;
};
Но это не так:
static int t = 0;
class A
{
public:
A() : m(t++)
{
cout << "C:" << m << endl;
}
A a; // <<<< ----- THIS line
int m;
};
Второй компилируется не так, как ожидалось (да, я знаю, почему он не компилируется: на этом этапе кодаA
все еще не завершен) ...
Но ... первый компилируется хорошо (и делает то, что должен делать, то есть: вылетает приложение с помощью оператора вроде:A a[10];
). ЭтоA
полный тип в конструкторе? Также можете указать мне некоторые стандартные записи C ++ для этой ситуации?