接着上一次的博客继续探讨:
#include <iostream>
#include <cstring>
using namespace std;
class String
{
private:
char* m_data;
char* n_data;
public:
String(const char* m_cstr,const char* n_cstr);
String(const String& str);
~String();
char* get_m_str() const {return m_data;}
char* get_n_str() const {return n_data;}
char* change_m_str(const char* str)
{
strcpy(m_data, str);
return m_data;
}
char* change_n_str(const char* str)
{
strcpy(n_data, str);
return n_data;
}
};
String::String(const char* m_cstr = 0,const char* n_cstr = 0)
{
if(m_cstr&&n_cstr)
{
m_data = new char[strlen(m_cstr) + 1];
strcpy(m_data,m_cstr);
n_data = new char[strlen(n_cstr) + 1];
strcpy(n_data,n_cstr);
}
else
{
m_data = new char[1];
*m_data = '\0';
n_data = new char[1];
*n_data = '\0';
}
}
inline String::String(const String& str)
{
m_data = new char[strlen(str.m_data)+1];
strcpy(m_data,str.m_data);
n_data = new char[strlen(str.n_data)+1];
strcpy(n_data,str.n_data);
}
String::~String()
{
delete[] m_data;
delete[] n_data;
}
ostream& operator<<(ostream &os,const String &str)
{
os << str.get_m_str() << "-----" << str.get_n_str();
return os;
}
main()
{
String A("hello","word");