- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
What is Rule of Five in C++11?
The rule of five is applied in C++ for resource management. Resource management frees the client from having to worry about the lifetime of the managed object, potentially eliminating memory leaks and other problems in the C++ code. But this management comes at a cost. The Rule of The Big Five states that if you have to write one of the following functions then you have to have a policy for all of them. If we have an Object Foo then we can have a FooManager that handles the resource Foo. When implementing FooManager, you'll likely all need the following functions to be implemented −
destructor − When this manager goes out of scope it should free all the resources it was managing.
assignment operator − If you do not provide one the compiler creates a default assignment operator. The default assignment operation is a member-wise copy function and does a shallow copy and not a deep copy. This could cause problems like memory leaks, wrong assignement.
copy constructor − The compiler-supplied copy constructor does a member-wise copy of all the FooManager's attributes. This poses the same problems as the assignement operator.
move constructor − Copying objects can be expensive as it involves creating, copying and then destroying temporary objects. C++11 introduced the concept of the r-value reference. An r-value reference can be explicitly bound to an r-value. An r-value is an unnamed object. A temporary object, in other words. This r-value reference can be used in a constructor to create a reference to the r-value passed to it.
move assignment operator − It is useful to only have one resource at a time. This resource's ownership can be transferred from one manager to another. In such cases you can provide a move assignment operator.
This is a great resource to learn about the rule of five − https://www.feabhas.com/sites/default/files/2016-06/Rule%20of%20the%20Big%20Five.pdf.