The prototype of the known class string is:
Class string
{
Public:
String (const char * STR = NULL); // common Constructor
String (const string & other); // copy the constructor
~ String (void); // destructor
String & operator = (const string & other); // value assignment function
PRIVATE:
Char * m_data; // used to save strings
};
Write the above four functions of string
/* Destructor */
String ::~ String (void)
{
Delete [] m_data; // because m_data is an internal data type, you can also write it as delete m_data;
}
/* Common constructor */
String: string (const char * Str)
{
If (STR = NULL)
{
M_data = new char [1];
* M_data = '\ 0 ';
}
Else
{
Int Len = strlen (STR );
M_data = new char [Len + 1];
Strcpy (m_data, STR );
}
}
/* Copy the constructor */
String: string (const string & other)
{
Int Len = strlen (other. m_data );
M_data = new char [Len + 1]; // m_data is directed only to the applied space. It is only a pointer before it is applied, not to the specified memory space.
If (m_data! = NULL)
Strcpy (m_data, other. m_data );
}
/* Value assignment function */
String & string: Operator = (const string & other)
{
If (this = & other)
Return * this;
Delete [] m_data; // release the original memory resource
Int Len = strlen (other. m_data );
M_data = new char [Len + 1]; // allocate new memory resources
If (m_data! = NULL)
Strcpy (m_data, other. m_data );
Return * This; // return the reference of this object
}