LINUX.ORG.RU

странность

 


0

2
class someclass
{
   someclass();
   someclass(const someclass &c);
   ~someclass();
};

someclass fun()
{
   someclass f;
   return f;
}
int main()
{
  someclass i = fun();
}

непонятно при инициализации переменной i будет ли вызываться сначала конструктор копии для инициализации переменной i копией f а после деструктор для f или i будет инициализироваться f без использования конструктора копии?

странность

class someclass
{
   someclass();
   someclass(const someclass &c);
   ~someclass();
};

не вникая в язык

накуа это вообще ?

anTaRes ★★★★
()
Ответ на: комментарий от Deleted

4.2 или вообще ничего (rvo), или копирующий конструктор раздел стандарта 12.2

anonymous
()
Ответ на: комментарий от UVV

Могли бы быть, но компилятору было разрешено их выкинуть. Как и сейчас

Gvidon ★★★★
()

напиши один раз все конструкторы вручную, с выводом, и сам посмотри, что к чему. в принципе, это полезный эксперимент для начинающих.

Iron_Bug ★★★★★
()
Ответ на: комментарий от UVV

нет, в этом случае вызовется copy c-tor. default ctor + assignment operator это если

someclass i;
i = fun();

anonymous
()

Пример бесстыдно стырен из стандарта, сдаётся мне что это унылая попытка набросить.

Так что не остаётся ничего, кроме как послать автора в конец раздела [class.copy].

Macil ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.