RAII это оборачивание в класс некоторой "сырой" сущности. Сущность может быть любая, но с ней неудобно работать, потому что надо следить за созданием и уничтожением в программе. Например
class WinAPI32_Window
{
HWND hWnd = 0; // <--ресурс
public:
WinAPI32_Window()
{
//100 строк для регистрации класса окна и создания окна
hWnd = CreateWindow(/* много параметров */); // <--получаем ресурс
if (!hWnd) throw std::system_error("win creation error"); // кидаем исключение в конструкторе, если окно не создается, то объект не создается тоже
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
}
~WinAPI32_Window()
{
DestroyWindow(hWnd); // <-- освобождение ресурса
}
}
//ну а дальше в программе:
try {
auto win = new WinAPI32_Window; //создаем объект = инициализируем и получаем внутри hWnd
} catch //...
//работаем
delete win; //освобождаем ресурс путем удаления объекта