- #include <iostream> 
- #include <cstring> 
-   
- struct test 
- { 
- public: 
-     test(const std::string& str) : name(new char[str.length() + 1]) 
-     { 
-         strcpy((char*)name, str.c_str()); 
-     } 
-     // Rule of three 
-     //   -- Copy ctor 
-     //   -- Copy assignment operator 
-     // Rule of five 
-     //   -- Move ctor 
-     //   -- Move assignment operator 
-     ~test() { delete[] name; } 
-     void printName() { std::cout << name << std::endl; } 
- private: 
-     const char* name; 
- }; 
-   
-   
- int main() 
- { 
-     std::string s{"test"}; 
-     test t{s}; 
-     t.printName(); 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KCnN0cnVjdCB0ZXN0CnsKcHVibGljOgogICAgdGVzdChjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSA6IG5hbWUobmV3IGNoYXJbc3RyLmxlbmd0aCgpICsgMV0pCiAgICB7CiAgICAgICAgc3RyY3B5KChjaGFyKiluYW1lLCBzdHIuY19zdHIoKSk7CiAgICB9CiAgICAvLyBSdWxlIG9mIHRocmVlCiAgICAvLyAgIC0tIENvcHkgY3RvcgogICAgLy8gICAtLSBDb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IKICAgIC8vIFJ1bGUgb2YgZml2ZQogICAgLy8gICAtLSBNb3ZlIGN0b3IKICAgIC8vICAgLS0gTW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yCiAgICB+dGVzdCgpIHsgZGVsZXRlW10gbmFtZTsgfQogICAgdm9pZCBwcmludE5hbWUoKSB7IHN0ZDo6Y291dCA8PCBuYW1lIDw8IHN0ZDo6ZW5kbDsgfQpwcml2YXRlOgogICAgY29uc3QgY2hhciogbmFtZTsKfTsKCgppbnQgbWFpbigpCnsKICAgIHN0ZDo6c3RyaW5nIHN7InRlc3QifTsKICAgIHRlc3QgdHtzfTsKICAgIHQucHJpbnROYW1lKCk7Cn0=