Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Writing game engines in C++ without using destructors is just foolish.

If by OOP you mean virtual functions? Nobody uses that stuff much anymore, except Java refugees. (They use shared pointers, too.) But, anyplace you would use a function pointer in C, it's cleaner with a virtual function, and often faster.



> Writing game engines in C++ without using destructors is just foolish.

Why? My understanding is that in modern game dev you're mostly traversing large arenas of structured memory, and you avoid freeing individual objects like the plague.


Memory is just one kind of resources. Games do tons of I/O, often gigabytes/second. To illustrate, any PC game has a lot of places which call GPU driver like this:

    D3D11_MAPPED_SUBRESOURCE mapped;
    context->Map( buffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped );
    // Write memory address pointed by mapped.pData
    context->Unmap( buffer, 0 );
With C++ RAII, you can do something like that instead:

    MappedBuffer mapped{ buffer }
    // Write memory address pointed by mapped.pData.
    // No need to do anything else, the destructor of MappedBuffer will unmap.


This. Freeing memory is the least important job for destructors.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: