三个特殊函数
- 含有指针成员的类:必须提供拷贝构造函数与赋值运算符重载函数
class String {
public:
String(const char *str = NULL);
String(const String &str);
String& operator=(const String &str);
public:
~String();
public:
char *c_str() const;
public:
void show() const {
cout << m_data << endl;
}
private:
char *m_data;
};
inline
String::String(const char *str) {
if (str) {
m_data = new char[strlen(str) + 1]();
strcpy(m_data, str);
} else {
m_data = new char[1];
*m_data = '\0';
}
}
inline
String::String(const String &str) {
if (str.m_data) {
m_data = new char[strlen(str.m_data) + 1]();
strcpy(m_data, str.m_data);
} else {
m_data = new char[1]