Привет всем,
Вот давеча натолкнулся (в коде коллег

) на такую вот конструкцию:
сначала стояло:
class SomeClass
{
...
};
SomeClass x[100];
...
for(..)
{
x[i] = SomeClass();
}
потом видимо при переходе на очередную версию gcc это дело перестало работать (?) и оказалось закомментированным.
На место вышеозначенного кода пришло следующее:
class SomeClass
{
...
};
SomeClass x[100];
...
for(..)
{
// g++ does not allow the automatic casting
// x[i] = SomeClass();
SomeClass sc = SomeClass();
x[i] = sc;
}
Правда второй вариант тоже не собирается, поскольку у SomeClass не объявлен копирующий конструктор.
Я вообще не каждый день пишу на С++, поэтому тонкости ускользают и/или забываются.
Объясните-ка мне, что автор вообще хотел сказать конструкцией вида x[i] = SomeClass(); ?
Каков смысл в вызове конструктора напрямую без new?
Другой мой коллега утверждает, что
void proc()
{
SomeClass();
}
не только вызовет конструктор, но и _выделит_ память под безымянный объект в стеке и еще и деструктор вызовется при выходе из процедуры.
Какой толк вызывать вне класса его конструктор напрямую без new и без объявления переменной (кроме исполнения самого кода конструктора)?
Спасибо!