Безопасно или приемлемо практиковать создание «временных» объектов в C ++ с пустой областью действия (например, следующей), чтобы гарантировать их немедленное уничтожение?
{
SingularPurpose singular(&ptr_to_something);
}
Да, это вполне приемлемая практика и может быть очень полезным не только для отдельных объектов. Например, блокировка общих ресурсов при выполнении некоторых операций и автоматическая разблокировка при выходе из области видимости:
// normal program stuff here ...
// introduce an open scope
{
std::lock_guard<std::mutex> lock(mtx); // lock a resource in this scope
// do stuff with the resource ...
// at the end of the scope the lock object is destroyed
// and the resource becomes available to other threads
}
// normal program stuff continues ...
Ваша сфера не пуста. Содержит декларацию singular
,
Это нормально, но …
…нет необходимости создавать переменную; Вы можете просто создать временный объект (который не является переменной):
SingularPurpose(&ptr_to_something);