class Deep {
public:
int* data;
Deep(int val) {
data = new int(val);
}
// Copy constructor for deep copy
Deep(const Deep& other) {
data = new int(*other.data);
}
// Assignment operator for deep copy
Deep& operator=(const Deep& other) {
if (this != &other) {
delete data;
data = new int(*other.data);
}
return *this;
}
~Deep() {
delete data;
}
};
If your class handles dynamic memory: