From a purely object-oriented perspective, "copy semantics" is the right way to preserve control over object ownership. But in those scenarios where ownership becomes irrelevant, C++11 "move semantics ...
// CHECK-MESSAGES: [[@LINE-3]]:7: warning: class 'DefinesDestructor' defines a destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment ...
The Rule of Three states: If you need a custom destructor, copy constructor, OR copy assignment operator, you probably need all three. In modern C++ (C++11+), we extend this to the Rule of Five by ...