#include <iostream>
#include <string>
class A {
public:
//构造函数
A(const std::string& str)
{
_s = new std::string(str);
}
A(){}
//重载赋值运算
void operator=(const std::string& str)
{
if (_s) delete _s;
_s = new std::string(str);
}
//移动构造函数
A(std::string&& str)
{
if (_s) delete _s;
_s = &str;
//delete& str;
}
std::string s() const {
return *_s;
}
private:
std::string* _s;
};
int main() {
std::string input;
std::cin >> input;
A a(input);
A b(std::move(a));
std::cout << b.s() << std::endl;
A c;
c = std::move(b);
std::cout << c.s() << std::endl;
return 0;
}