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 ★★★★ ()

Дефолт-конструктор + если нет RVO, копирующий конструктор.

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

someclass i = fun();

Интересно.. а в с++03 был бы default ctor + assignment operator, так ведь?

UVV ★★★★★ ()
Ответ на: комментарий от 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 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.