Create a class Number with a pointer as a data data member of integer type. Write user defined copy constructor to the class and implement the deep copy for the Number class objects. So when a new object is created from an old object of the Number class, pointer data member can point different memory block.
#include <iostream>
class Number {
public:
Number(int n)
: m_data { new int(n) }
{}
~Number() {
delete m_data;
}
Number(const Number& n)
: m_data { new int(*n.m_data) }
{}
int Value() const noexcept {
return *m_data;
}
private:
int * m_data { nullptr };
};
int main() {
Number n1(2), n2(3);
Number n3(n1);
std::cout << n1.Value() << " ";
std::cout << n2.Value() << " ";
std::cout << n3.Value() << " ";
return 0;
}
Comments
Leave a comment