That's not just because ! That's because it prevent duplicating a pointer that will be freed twice and it will not forget to release a resource it holds. Of course, all the Init/Destroy, a C relica, defeat the whole purpose of RAII with the constructor/destructor pair. If i rewrite the video abstraction and backends, one of my top priority will be to remove that, to secure and to simplify the resource management for example.