Вам не нужно реализовывать это в C ++, потому что стандартный шаблон RAII уже делает то, что вам нужно.
{
ofstream myfile;
myfile.open("hello.txt");
myfile << "Hello\n";
}
Когда заканчивается область действия блока, myfile
уничтожается, что закрывает файл и освобождает все ресурсы, связанные с объектом.
Причина, по которой оператор using
существует в C #, заключается в предоставлении некоторого синтаксического сахара вокруг try / finally и IDisposable
. Это просто не нужно в C ++, потому что два языка различаются, и проблема решается по-разному на каждом языке.