#include <iostream>
using namespace std;
class StringEdit {
char* p; // pointer to hold characters
int len; // length of string
public:
// Default constructor
StringEdit() {
len = 0;
p = nullptr;
}
// Parameterized constructor
StringEdit(const char* arr, int l) {
len = l;
p = new char[len];
for (int i = 0; i < len; i++) {
p[i] = arr[i];
}
}
//copy constructor
// StringEdit(const StringEdit& newStr) {
// len = newStr.len;
// p = new char[len];
// for (int i = 0; i < len; i++) {
// p[i] = newStr.p[i];
// }
// }
// Copy assignment operator overload
StringEdit& operator=(const StringEdit& newStr) {
if (this != &newStr) { // avoid self-assignment
delete[] p; // free old memory
len = newStr.len;
p = new char[len];
for (int i = 0; i < len; i++) {
p[i] = newStr.p[i];
}
}
return *this;
}
// Display function
void display() {
for (int i = 0; i < len; i++) {
cout << p[i];
}
cout << endl;
}
// Destructor
~StringEdit() {
delete[] p;
}
};
int main() {
StringEdit s; // empty string
StringEdit dummy("abcde", 5); // parameterized constructor
s = dummy; // uses overloaded operator=
cout << "Dummy string: ";
dummy.display();
cout << "Copied string (s): ";
s.display();
//cout << "Copied string (s): ";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgU3RyaW5nRWRpdCB7CgljaGFyKiBwOyAgIC8vIHBvaW50ZXIgdG8gaG9sZCBjaGFyYWN0ZXJzCglpbnQgbGVuOyAgIC8vIGxlbmd0aCBvZiBzdHJpbmcKCnB1YmxpYzoKCS8vIERlZmF1bHQgY29uc3RydWN0b3IKCVN0cmluZ0VkaXQoKSB7CgkJbGVuID0gMDsKCQlwID0gbnVsbHB0cjsKCX0KCS8vIFBhcmFtZXRlcml6ZWQgY29uc3RydWN0b3IKCVN0cmluZ0VkaXQoY29uc3QgY2hhciogYXJyLCBpbnQgbCkgewoJCWxlbiA9IGw7CgkJcCA9IG5ldyBjaGFyW2xlbl07CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewoJCQlwW2ldID0gYXJyW2ldOwoJCX0KCX0KCiAgICAvL2NvcHkgY29uc3RydWN0b3IKLy8gCVN0cmluZ0VkaXQoY29uc3QgU3RyaW5nRWRpdCYgbmV3U3RyKSB7CgovLyAJCWxlbiA9IG5ld1N0ci5sZW47Ci8vIAkJcCA9IG5ldyBjaGFyW2xlbl07Ci8vIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewovLyAJCQlwW2ldID0gbmV3U3RyLnBbaV07Ci8vIAkJfQoKLy8gCX0KCgkvLyBDb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3Igb3ZlcmxvYWQKCVN0cmluZ0VkaXQmIG9wZXJhdG9yPShjb25zdCBTdHJpbmdFZGl0JiBuZXdTdHIpIHsKCQlpZiAodGhpcyAhPSAmbmV3U3RyKSB7ICAvLyBhdm9pZCBzZWxmLWFzc2lnbm1lbnQKCQkJZGVsZXRlW10gcDsgICAgICAgICAvLyBmcmVlIG9sZCBtZW1vcnkKCgkJCWxlbiA9IG5ld1N0ci5sZW47CgkJCXAgPSBuZXcgY2hhcltsZW5dOwoJCQlmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CgkJCQlwW2ldID0gbmV3U3RyLnBbaV07CgkJCX0KCQl9CgkJcmV0dXJuICp0aGlzOwoJfQoKCS8vIERpc3BsYXkgZnVuY3Rpb24KCXZvaWQgZGlzcGxheSgpICB7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewoJCQljb3V0IDw8IHBbaV07CgkJfQoJCWNvdXQgPDwgZW5kbDsKCX0KCgkvLyBEZXN0cnVjdG9yCgl+U3RyaW5nRWRpdCgpIHsKCQlkZWxldGVbXSBwOwoJfQp9OwoKaW50IG1haW4oKSB7CglTdHJpbmdFZGl0IHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbXB0eSBzdHJpbmcKCVN0cmluZ0VkaXQgZHVtbXkoImFiY2RlIiwgNSk7ICAgICAgICAgIC8vIHBhcmFtZXRlcml6ZWQgY29uc3RydWN0b3IKCXMgPSBkdW1teTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlcyBvdmVybG9hZGVkIG9wZXJhdG9yPQoKCWNvdXQgPDwgIkR1bW15IHN0cmluZzogIjsKCWR1bW15LmRpc3BsYXkoKTsKCWNvdXQgPDwgIkNvcGllZCBzdHJpbmcgKHMpOiAiOwoJcy5kaXNwbGF5KCk7CgkvL2NvdXQgPDwgIkNvcGllZCBzdHJpbmcgKHMpOiAiOwoJcmV0dXJuIDA7Cn0=