#include <iostream>
#include <string>
using namespace std;
class strtype {
string str;
public:
strtype() {
cout << "strtype()" << endl;
str = "Test";
}
strtype(const strtype &st) {
cout << "strtype(const strtype &)" << endl;
str = st.str;
}
strtype(const string &ss) {
cout << "strtype(const string &)" << endl;
str = ss;
}
strtype(const char *ss) {
cout << "strtype(const char *)" << endl;
str = ss;
}
strtype& operator=(const strtype &st) { // <-- change this!
cout << "operator=(const strtype &)" << endl;
str = st.str;
return *this;
}
string get_str() const { return str; };
};
int main()
{
strtype b = "example";
cout << b.get_str() << endl;
b = "something else";
cout << b.get_str() << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3Mgc3RydHlwZSB7CiAgICBzdHJpbmcgc3RyOwpwdWJsaWM6CiAgICBzdHJ0eXBlKCkgewogICAgICAgIGNvdXQgPDwgInN0cnR5cGUoKSIgPDwgZW5kbDsKICAgICAgICBzdHIgPSAiVGVzdCI7CiAgICB9CgogICAgc3RydHlwZShjb25zdCBzdHJ0eXBlICZzdCkgewogICAgICAgIGNvdXQgPDwgInN0cnR5cGUoY29uc3Qgc3RydHlwZSAmKSIgPDwgZW5kbDsKICAgICAgICBzdHIgPSBzdC5zdHI7CiAgICB9CgogICAgc3RydHlwZShjb25zdCBzdHJpbmcgJnNzKSB7CiAgICAgICAgY291dCA8PCAic3RydHlwZShjb25zdCBzdHJpbmcgJikiIDw8IGVuZGw7CiAgICAgICAgc3RyID0gc3M7CiAgICB9CiAgICAKICAgIHN0cnR5cGUoY29uc3QgY2hhciAqc3MpIHsKICAgICAgICBjb3V0IDw8ICJzdHJ0eXBlKGNvbnN0IGNoYXIgKikiIDw8IGVuZGw7CiAgICAgICAgc3RyID0gc3M7CiAgICB9CgogICAgc3RydHlwZSYgb3BlcmF0b3I9KGNvbnN0IHN0cnR5cGUgJnN0KSB7IC8vIDwtLSBjaGFuZ2UgdGhpcyEKICAgICAgICBjb3V0IDw8ICJvcGVyYXRvcj0oY29uc3Qgc3RydHlwZSAmKSIgPDwgZW5kbDsKICAgICAgICBzdHIgPSBzdC5zdHI7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIHN0cmluZyBnZXRfc3RyKCkgY29uc3QgeyByZXR1cm4gc3RyOyB9Owp9OwogICAgCmludCBtYWluKCkKewogICAgc3RydHlwZSBiID0gImV4YW1wbGUiOwogICAgY291dCA8PCBiLmdldF9zdHIoKSA8PCBlbmRsOwoKICAgIGIgPSAic29tZXRoaW5nIGVsc2UiOwogICAgY291dCA8PCBiLmdldF9zdHIoKSA8PCBlbmRsOwoKCXJldHVybiAwOwp9