C ++ Уничтожение переменных с помощью Scoping

Безопасно или приемлемо практиковать создание «временных» объектов в C ++ с пустой областью действия (например, следующей), чтобы гарантировать их немедленное уничтожение?

{
SingularPurpose singular(&ptr_to_something);
}

2

Решение

Да, это вполне приемлемая практика и может быть очень полезным не только для отдельных объектов. Например, блокировка общих ресурсов при выполнении некоторых операций и автоматическая разблокировка при выходе из области видимости:

// 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 ...
5

Другие решения

  1. Ваша сфера не пуста. Содержит декларацию singular,

  2. Это нормально, но …

  3. …нет необходимости создавать переменную; Вы можете просто создать временный объект (который не является переменной):

    SingularPurpose(&ptr_to_something);
    
6

По вопросам рекламы [email protected]