LINUX.ORG.RU

История изменений

Исправление fsb4000, (текущая версия) :

Потому что sizeof(B) > sizeof(A). При возврате значение обрубается.

Нет, конечно же. Там всё норм. (ну всмысле деструктор не виртуальный и т.д., но с возвратом там всё норм)

При возврате вызывается copy constructor.

сравни:

https://gcc.godbolt.org/z/1TsWGxbxM

и

https://gcc.godbolt.org/z/PqqE6K47q

Если ты этого не хочешь, то конструктор копирования/перемещения всегда можно запретить. Но компилятор не может тут ничего сделать, потому что иногда это именно то что ты хочешь…

Исправление fsb4000, :

Потому что sizeof(B) > sizeof(A). При возврате значение обрубается.

Нет, конечно же. Там всё норм. (ну всмысле деструктор не виртуальный и т.д., но с возвратом там всё норм)

При возврате вызывается copy constructor.

сравни:

https://gcc.godbolt.org/z/1TsWGxbxM

и

https://gcc.godbolt.org/z/PqqE6K47q

Исходная версия fsb4000, :

Потому что sizeof(B) > sizeof(A). При возврате значение обрубается.

Нет, конечно же. Там всё норм.

При возврате вызывается copy constructor.

сравни:

https://gcc.godbolt.org/z/1TsWGxbxM

и

https://gcc.godbolt.org/z/PqqE6K47q