Limitations of the rule of three

Although a correct implementation of the rule of three is all that is required for a class to handle its internal resources, two problems arise:

  • Resources which cannot be copied: In the Buffer class example, our resource can be copied, but there are other types of resources where a copy wouldn't make sense. For example, the resource contained in a class might be a std::thread, a network connection, or something else which it is not possible to copy. In these cases, it is simply not possible to pass around the object.
  • Unnecessary copies: If we return our Buffer class from a function, the entire array needs to be copied.

The following example shows how a Buffer object created inside make_buffer() is fully ...

Get C++ High Performance now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.