Здравствуйте, tstalker, Вы писали:
T>Бро, я же писал тебе выше: это норма.
T>Ничего здесь опасного нет.
T>Вот навскидку простенький пример:
BoxOfTNT * box = new BoxOfTNT();
TNT & stick (box_of_TNT->choose_one_stick_of_TNT());
delete box;
stick.prepare_to_use(); // <- BOOM
Оно, конечно, сам-себе буратино, но факт остается фактом — возвращать по значению — безопасней.
ps/
И да, указатель не является необходимым условием. Можено передать ссылку на шашку в конструктор другого класса, экземпляр которого будет возвращен из функции по значению, при этом, естествено, ящик и шашка, на которую есть ссылка, будут разрушены по выходу из этой функции.