#include <iostream>
using namespace std;
class SubstituteTeacher {
public:
SubstituteTeacher();
~SubstituteTeacher();
SubstituteTeacher& operator=(const SubstituteTeacher& objToCopy);
void SetSubject(const string setVal) {
*subject = setVal;
}
string GetSubject() const {
return *subject;
}
private:
string* subject;
};
SubstituteTeacher::SubstituteTeacher() {
subject = new string;
*subject = "none";
}
SubstituteTeacher::~SubstituteTeacher() {
delete subject;
}
SubstituteTeacher& SubstituteTeacher::operator=(const SubstituteTeacher& objToCopy) {
if (this != &objToCopy) {
delete subject;
subject = new string;
*subject = *(objToCopy.subject);
}
return *this;
}
int main() {
SubstituteTeacher msDorf;
SubstituteTeacher mrDiaz;
SubstituteTeacher msPark;
msPark.SetSubject("English");
msDorf = msPark;
mrDiaz.SetSubject("Math");
msPark = mrDiaz;
cout << msPark.GetSubject() << endl;
cout << msDorf.GetSubject() << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgU3Vic3RpdHV0ZVRlYWNoZXIgewogICBwdWJsaWM6CiAgICAgIFN1YnN0aXR1dGVUZWFjaGVyKCk7CiAgICAgIH5TdWJzdGl0dXRlVGVhY2hlcigpOwogICAgICBTdWJzdGl0dXRlVGVhY2hlciYgb3BlcmF0b3I9KGNvbnN0IFN1YnN0aXR1dGVUZWFjaGVyJiBvYmpUb0NvcHkpOwoKICAgICAgdm9pZCBTZXRTdWJqZWN0KGNvbnN0IHN0cmluZyBzZXRWYWwpIHsKICAgICAgICAgKnN1YmplY3QgPSBzZXRWYWw7CiAgICAgIH0KCiAgICAgIHN0cmluZyBHZXRTdWJqZWN0KCkgY29uc3QgewogICAgICAgICByZXR1cm4gKnN1YmplY3Q7CiAgICAgIH0KICAgcHJpdmF0ZToKICAgICAgc3RyaW5nKiBzdWJqZWN0Owp9OwoKU3Vic3RpdHV0ZVRlYWNoZXI6OlN1YnN0aXR1dGVUZWFjaGVyKCkgewogICBzdWJqZWN0ID0gbmV3IHN0cmluZzsKICAgKnN1YmplY3QgPSAibm9uZSI7Cn0KClN1YnN0aXR1dGVUZWFjaGVyOjp+U3Vic3RpdHV0ZVRlYWNoZXIoKSB7CiAgIGRlbGV0ZSBzdWJqZWN0Owp9CgpTdWJzdGl0dXRlVGVhY2hlciYgU3Vic3RpdHV0ZVRlYWNoZXI6Om9wZXJhdG9yPShjb25zdCBTdWJzdGl0dXRlVGVhY2hlciYgb2JqVG9Db3B5KSB7CiAgIGlmICh0aGlzICE9ICZvYmpUb0NvcHkpIHsKICAgICAgZGVsZXRlIHN1YmplY3Q7CiAgICAgIHN1YmplY3QgPSBuZXcgc3RyaW5nOwogICAgICAqc3ViamVjdCA9ICoob2JqVG9Db3B5LnN1YmplY3QpOwogICB9CgogICByZXR1cm4gKnRoaXM7Cn0KCmludCBtYWluKCkgewogICBTdWJzdGl0dXRlVGVhY2hlciBtc0RvcmY7CiAgIFN1YnN0aXR1dGVUZWFjaGVyIG1yRGlhejsKICAgU3Vic3RpdHV0ZVRlYWNoZXIgbXNQYXJrOwoKICAgbXNQYXJrLlNldFN1YmplY3QoIkVuZ2xpc2giKTsKICAgbXNEb3JmID0gbXNQYXJrOwogICBtckRpYXouU2V0U3ViamVjdCgiTWF0aCIpOwogICBtc1BhcmsgPSBtckRpYXo7CgogICBjb3V0IDw8IG1zUGFyay5HZXRTdWJqZWN0KCkgPDwgZW5kbDsKICAgY291dCA8PCBtc0RvcmYuR2V0U3ViamVjdCgpIDw8IGVuZGw7CgogICByZXR1cm4gMDsKfQ==