#include <iostream>
#include<string.h>
using namespace std;
class my_string {
private:
char* m_data;
unsigned length;
public:
my_string(const char* m){
cout<<"ctor"<<endl;
length = strlen(m);
m_data = new char[length];
memcpy(m_data, m, length);
}
my_string(const my_string& other){
cout<<"copy ctor"<<endl;
length = other.length;
m_data = new char[length];
memcpy(m_data, other.m_data, length);
}
my_string(my_string&& other) noexcept {
cout<<"move ctor"<<endl;
length = other.length;
m_data = other.m_data;
other.length = 0;
other.m_data = nullptr;
}
~my_string(){
cout<<"dtor"<<endl;
length = 0;
delete m_data;
}
char* c_str(){ return m_data;}
};
class Entity{
private:
my_string str;
public:
Entity(const my_string& s): str(s){}
Entity(my_string&& s):str(std::move(s)) {
//str = std::move(s);
}
~Entity(){
}
void print(){
cout<< str.c_str()<<endl;
}
};
int main() {
//Entity E(my_string("priya"));
//my_string p ("priya");
//my_string q = p;
my_string* p = new my_string("pl");
my_string y = std::move("yadav");
// E.print();
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxzdHJpbmcuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY2xhc3MgbXlfc3RyaW5nIHsKIHByaXZhdGU6IAoJY2hhciogbV9kYXRhOwoJdW5zaWduZWQgbGVuZ3RoOwogcHVibGljOgogICBteV9zdHJpbmcoY29uc3QgY2hhciogbSl7CiAgIAljb3V0PDwiY3RvciI8PGVuZGw7CiAgIAlsZW5ndGggPSBzdHJsZW4obSk7CiAgIAltX2RhdGEgPSBuZXcgY2hhcltsZW5ndGhdOwogICAJbWVtY3B5KG1fZGF0YSwgbSwgbGVuZ3RoKTsKICAgfQogICBteV9zdHJpbmcoY29uc3QgbXlfc3RyaW5nJiBvdGhlcil7CiAgIAljb3V0PDwiY29weSBjdG9yIjw8ZW5kbDsKICAgCWxlbmd0aCA9IG90aGVyLmxlbmd0aDsKICAgCW1fZGF0YSA9IG5ldyBjaGFyW2xlbmd0aF07CiAgIAltZW1jcHkobV9kYXRhLCBvdGhlci5tX2RhdGEsIGxlbmd0aCk7CiAgIH0KICAgbXlfc3RyaW5nKG15X3N0cmluZyYmIG90aGVyKSBub2V4Y2VwdCB7CiAgIAljb3V0PDwibW92ZSBjdG9yIjw8ZW5kbDsKICAgCWxlbmd0aCA9IG90aGVyLmxlbmd0aDsKICAgCW1fZGF0YSA9IG90aGVyLm1fZGF0YTsKICAgCW90aGVyLmxlbmd0aCA9IDA7CiAgIAlvdGhlci5tX2RhdGEgPSBudWxscHRyOwogICB9CiAgIH5teV9zdHJpbmcoKXsKICAgCWNvdXQ8PCJkdG9yIjw8ZW5kbDsKICAgCSBsZW5ndGggPSAwOwogICAJIGRlbGV0ZSBtX2RhdGE7CiAgIH0KICAgY2hhciogY19zdHIoKXsgcmV0dXJuIG1fZGF0YTt9Cn07CgpjbGFzcyBFbnRpdHl7Cglwcml2YXRlOgoJIG15X3N0cmluZyBzdHI7CglwdWJsaWM6IAoJIEVudGl0eShjb25zdCBteV9zdHJpbmcmIHMpOiBzdHIocyl7fQoJIEVudGl0eShteV9zdHJpbmcmJiBzKTpzdHIoc3RkOjptb3ZlKHMpKSB7CgkgCS8vc3RyID0gc3RkOjptb3ZlKHMpOwoJIH0KCSAKCSB+RW50aXR5KCl7CgoJIH0KCSB2b2lkIHByaW50KCl7CgkgCWNvdXQ8PCBzdHIuY19zdHIoKTw8ZW5kbDsKCSB9Cn07CmludCBtYWluKCkgewoJLy9FbnRpdHkgRShteV9zdHJpbmcoInByaXlhIikpOwoJLy9teV9zdHJpbmcgcCAoInByaXlhIik7CgkvL215X3N0cmluZyBxID0gcDsKCW15X3N0cmluZyogcCA9IG5ldyBteV9zdHJpbmcoInBsIik7CglteV9zdHJpbmcgeSA9IHN0ZDo6bW92ZSgieWFkYXYiKTsKLy8JRS5wcmludCgpOwoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcmV0dXJuIDA7Cn0=