Copy semantics (part 2)
This lesson contains approximately 25 minutes of video content.
Implementing a deep copy policy
The rule of zero and the rule of three
Activity: Rule of three for a two-dimensional array
Graded Playground Autograder
Activity Prompt:
This activity requires you to define the rule of three functions for the class Array2D. The copy policy you implement must perform a deep copy.
The objects derived from this class blueprint maintain a two-dimensional array on the free store through their int** array_ data member. array_ points to an array of height_ int* objects. Each int* in turn points to an array of width_ int objects. When implementing your deep copy policy, if the ArrayOfArrays object being copied from is empty (defined as its array_ is nullptr), ensure the object being initialized or assigned to has the same values as it would upon default constructed.
Member functions you are to implement
| public: | |
~Array2D(); |
Destructor. Deallocates all dynamic objects associated with array_. |
Array2D(const Array2D& rhs); |
Copy constructor.
|
Array2D& operator=(const Array2D& rhs); |
Copy Assignment Operator.
|
Provided member functions
| public: | |
Array2D() = default; |
Default constructor. |
#include "solution.hpp"
int main() {}
#ifndef SOLUTION_HPP
#define SOLUTION_HPP
class Array2D {
public:
Array2D() = default;
Array2D(const Array2D& rhs);
Array2D& operator=(const Array2D& rhs);
~Array2D();
private:
unsigned int height_ = 0;
unsigned int width_ = 0;
int** array_ = nullptr;
};
#endif
#include "solution.hpp"
Submit is not supported in this site.