ポインタのメンバーを持つクラス
1. 3つの特別な機能
コピーコンストラクタ、コピー代入、デストラクタ
2.ctorとデストラクタ
inline String::String(const char* cstr = 0)
{
if(cstr)
{
m_data = new char[strlen(cstr)+1];
strcpy(m_data, cstr);
}
else
{
m_data = new char[1];
*m_data = '\0';
}
}
inline String::~String()
{
delete[] m_data;
}
{
String s1();
String s2("hello");
String* p = new String("hello");
delete p;
}
3.ポインタクラスはコピーコンストラクタとコピー代入を持っている必要があります(カスタム)
ディープと浅いコピーコピー
inline String& String::operator=(const String& str)
{
if(this == &str)
return *this;
delete[] m_data;
m_data = new char[strlen(str.m_data) + 1];
strcpy(m_data, str.m_data);
return *this;
}