делаем копию по возвращении из функции?
Результаты следующего фрагмента мне не кажутся очевидными
MyClass f() {
MyClass cl;
return cl;
}
MyClass f() {
return *this;
}
Почему в первом случае не будет вызова конструктора копирования при возвращении из функции, а во втором будет?
В первом случае объект создаётся на месте ибо RVO, во втором так сделать не возможно ибо объект уже давно создан, потому скопируется
Надо гуглить rvo, nrvo
И да, первый случай не всегда будет без копирования, это как повезёт
Илья? Глеб?
Во всех
Почитай про гарантированное RVO, с 17го кажется стандарта
Обсуждают сегодня