Вбил себе в мозг, что в общем случае так делать нельзя, надо смотреть на реализацию класса. Если есть копирущий конструктор и оператор =, значить временный обьект из функции отдавать можно.
"Так делать нельзя" относится к случаю, когда в обьекте есть ссылки на внешние данные. В таком случае автоматический деструктор уничтожит только ссылки, а память, на которую они указывали - освбождена не будет.
Обьекты , в которых ссылок нет - отдавать из функций можно.
Но в общем случае ты прав :) -, если класс не твой и ты не знаешь, что там внутри намешано - лучше так не делать
Но в общем случае ты прав :) -, если класс не твой и ты не знаешь, что там внутри намешано - лучше так не делать
Вот и я за то же. Я понимаю, что классы в Wiring-е игрушечные, но GCC-то нет. Он реально сам создает копирующий и пустой конструктор, даже если "пейсатель классами" про них забыл. Это, конечно, гарантирует бинарную идентичность копии, но ничего более.
Вбил себе в мозг, что в общем случае так делать нельзя, надо смотреть на реализацию класса. Если есть копирущий конструктор и оператор =, значить временный обьект из функции отдавать можно.
"Так делать нельзя" относится к случаю, когда в обьекте есть ссылки на внешние данные. В таком случае автоматический деструктор уничтожит только ссылки, а память, на которую они указывали - освбождена не будет.
Обьекты , в которых ссылок нет - отдавать из функций можно.
Но в общем случае ты прав :) -, если класс не твой и ты не знаешь, что там внутри намешано - лучше так не делать
Но в общем случае ты прав :) -, если класс не твой и ты не знаешь, что там внутри намешано - лучше так не делать
Вот и я за то же. Я понимаю, что классы в Wiring-е игрушечные, но GCC-то нет. Он реально сам создает копирующий и пустой конструктор, даже если "пейсатель классами" про них забыл. Это, конечно, гарантирует бинарную идентичность копии, но ничего более.