#include <iostream>
class MyClass {
public:
int* data;
// Constructor
MyClass(int value) {
data = new int(value); // Dynamically allocate memory
}
//copy constructor, deep copy
MyClass(const MyClass& other){
data = new int(*other.data);
}
MyClass& operator=(const MyClass& other){
if(this != &other){
delete data;
data = new int(*other.data);
}
return *this;
}
// Destructor
~MyClass() {
delete data; // Free the allocated memory
}
};
int main() {
MyClass obj1(42);
MyClass obj2 = obj1;
MyClass obj3(66);
obj3 = obj2;
std::cout << "obj1 data: " << *obj1.data << std::endl;
std::cout << "obj2 data: " << *obj2.data << std::endl;
std::cout << "obj3 data: " << *obj3.data << std::endl;
*obj2.data = 100; // Modify obj2's data
std::cout << "After modification:" << std::endl;
std::cout << "obj1 data: " << *obj1.data << std::endl;
std::cout << "obj2 data: " << *obj2.data << std::endl;
std::cout << "obj3 data: " << *obj3.data << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgTXlDbGFzcyB7CnB1YmxpYzoKICAgIGludCogZGF0YTsKCiAgICAvLyBDb25zdHJ1Y3RvcgogICAgTXlDbGFzcyhpbnQgdmFsdWUpIHsKICAgICAgICBkYXRhID0gbmV3IGludCh2YWx1ZSk7IC8vIER5bmFtaWNhbGx5IGFsbG9jYXRlIG1lbW9yeQogICAgfQogICAgCiAgICAvL2NvcHkgY29uc3RydWN0b3IsIGRlZXAgY29weQogICAgTXlDbGFzcyhjb25zdCBNeUNsYXNzJiBvdGhlcil7CiAgICAgICAgZGF0YSA9IG5ldyBpbnQoKm90aGVyLmRhdGEpOwogICAgfQoKICAgIE15Q2xhc3MmIG9wZXJhdG9yPShjb25zdCBNeUNsYXNzJiBvdGhlcil7CiAgICAgICAgaWYodGhpcyAhPSAmb3RoZXIpewogICAgICAgICAgICBkZWxldGUgZGF0YTsKICAgICAgICAgICAgZGF0YSA9IG5ldyBpbnQoKm90aGVyLmRhdGEpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIC8vIERlc3RydWN0b3IKICAgIH5NeUNsYXNzKCkgewogICAgICAgIGRlbGV0ZSBkYXRhOyAvLyBGcmVlIHRoZSBhbGxvY2F0ZWQgbWVtb3J5CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIE15Q2xhc3Mgb2JqMSg0Mik7CiAgICBNeUNsYXNzIG9iajIgPSBvYmoxOyAKICAgIE15Q2xhc3Mgb2JqMyg2Nik7CiAgICBvYmozID0gb2JqMjsKCiAgICBzdGQ6OmNvdXQgPDwgIm9iajEgZGF0YTogIiA8PCAqb2JqMS5kYXRhIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAib2JqMiBkYXRhOiAiIDw8ICpvYmoyLmRhdGEgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICJvYmozIGRhdGE6ICIgPDwgKm9iajMuZGF0YSA8PCBzdGQ6OmVuZGw7CgogICAgKm9iajIuZGF0YSA9IDEwMDsgLy8gTW9kaWZ5IG9iajIncyBkYXRhCgogICAgc3RkOjpjb3V0IDw8ICJBZnRlciBtb2RpZmljYXRpb246IiA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgIm9iajEgZGF0YTogIiA8PCAqb2JqMS5kYXRhIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAib2JqMiBkYXRhOiAiIDw8ICpvYmoyLmRhdGEgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICJvYmozIGRhdGE6ICIgPDwgKm9iajMuZGF0YSA8PCBzdGQ6OmVuZGw7CgogICAgcmV0dXJuIDA7Cn0=