クラスStringのコンストラクション関数、コンストラクション関数、および付与関数の作成

5706 ワード

C++コード
class String 
{
public:
String(const char *str = NULL);//
String(const String &other); //
~ String(void); //
String & operate =(const String &other);//
private:
char *m_data;//
};

Stringの上記4つの関数を作成してください. 
C++コード
//       
String::String(const char *str)
{
if(str==NULL)
{
m_data = new char[1]; // : '\0' // : m_data NULL
*m_data = '\0';
}
else
{
int length = strlen(str);
m_data = new char[length+1]; // NULL
strcpy(m_data, str);
}
}
// String
String::~String(void)
{
delete [] m_data; // delete m_data;
}
//
String::String(const String &other)    // : const
{
int length = strlen(other.m_data);
m_data = new char[length+1];     // : m_data NULL
strcpy(m_data, other.m_data);
}
//
String & String::operate =(const String &other) // : const
{
if(this == &other)   //
return *this;
delete [] m_data;     //
int length = strlen( other.m_data );
m_data = new char[length+1];  // : m_data NULL
strcpy( m_data, other.m_data );
return *this;         //

}

分析:
Stringクラスのコンストラクション関数、コピーコンストラクション関数、付与関数、解析関数を正確に作成できる面接者は、少なくともC++基本功の60%以上を備えています.このクラスにはポインタクラスメンバー変数m_が含まれています.Dataは、クラスにポインタクラスのメンバー変数が含まれている場合、コピーコンストラクタ、付与関数、解析関数を再ロードする必要があります.これはC++プログラマーに対する基本的な要求であり、「Effective C++」で特に強調されている条項でもあります.このクラスをよく勉強して、特に注釈をつけた得点点と加点点の意味に注意して、このように60%以上のC++基本功を備えました!