class Cstring {
public:
Cstring(char *p = NULL);
Cstring(const Cstring&);
Cstring& operator=(const Cstring&);
~Cstring();
private:
char *m_data;
};
Cstring::Cstring(char*p){
if(p == NULL) {
m_data = new char[1];
m_data[0] = '\0';
}
else {
m_data = new char[strlen(p)+1];
strcpy(m_data, p);
}
}
Cstring::Cstring(const Cstring&other) {
if(&other != this){
m_data = new char[strlen(other.m_data)+1];
strcpy(m_data, other.m_data);
}
}
Cstring& Cstring:: operator=(const Cstring&other) {
if(&other == this) {
return *this;
}
if(m_data) delete[] m_data;
m_data = new char[strlen(other.m_data)+1];
strcpy(m_data, other.m_data);
return *this;
}
Cstring::~Cstring() {
if(m_data) {
delete [] m_data;
}
}