この代替を実装してみる。
ちなみに、stringクラスと呼んだが、実際はbasic_stringというテンプレートクラスをtypedefしたものである。
下のとおりである。厳密にはクラスではない。念のため。
typedef basic_string<char> string;
#include <iostream>
#include <string.h>
class My_string
{
private:
char *ptr;
public:
My_string(char *p)
{
std::cout<<"My_string : constructor"<<std::endl;
size_t len = strlen(p) + 1;
ptr = new char[len];
memcpy(ptr, p, len);
}
~My_string()
{
std::cout<<"My_string : destructor"<<std::endl;
delete[] ptr;
}
};
int main()
{
char *pname;
pname = "test";
My_string my_string(pname);
return 0;
}