Kezdőoldal » Számítástechnika » Programozás » Mit gondoltok erről a C++-os...

Mit gondoltok erről a C++-os RAII osztályról?

Figyelt kérdés

Vannak hiányosságai? Arra hivatott, hogy egy handle-t lezárjon. Chatgpt kódolta.


[link]


tegnapelőtt 21:41
 1/2 T. Feri ***** válasza:
Nem csak. Mind a létrehozás, mind a megszüntetés, mind az átadás letiltását, és az átruházás műveleteit deklarálta. Van néhány külső hivatkozása (HANDLE,ZwClose()), ami kicsit ködös, hiszen a ZwClose() függvénynek nincs ellenpárja. Vagyis a konstruktorban bármit is adsz meg paraméternek, azt a ZwClose() fogja lezárni. A HANDLE nyilván a *void megfelelője.
tegnap 12:28
Hasznos számodra ez a válasz?
 2/2 T. Feri ***** válasza:

Kipróbálás, ZwFree() helyett free(), és malloc()

[link]


#include <iostream>

#include <stdlib.h>

typedef void *HANDLE;

class Handle {

private:

HANDLE handle;

public:

// Constructor: Initialize handle to nullptr

explicit Handle(HANDLE h = nullptr) : handle(h) {

std::cout << "()\n";

}

Handle(const Handle&) = delete;

Handle& operator=(const Handle&) = delete;

Handle(Handle&& other) noexcept : handle(other.handle) {

other.handle = nullptr; // Transfer ownership

std::cout << "(&&)\n";

}

Handle& operator=(Handle&& other) noexcept {

if (this != &other) {

Close(); // Close existing handle

handle = other.handle;

other.handle = nullptr;

}

std::cout << "=&&\n";

return *this;

}

~Handle() {

Close();

}

void Close() {

if (handle) {

free(handle);

handle = nullptr;

std::cout << "free()\n";

}

else std::cout << "free(0)\n";

}

HANDLE Get() const {

return handle;

}

HANDLE Release() {

HANDLE temp = handle;

handle = nullptr;

return temp;

}

void Reset(HANDLE h = nullptr) {

Close();

handle = h;

}

};


int main() {

{

Handle a(malloc(1000));

Handle b(std::move(a));

a = std::move(b);

}

std::cout << "Try program\n";

return 0;

}

tegnap 14:03
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!