1. 类中含有指针—— class with pointer member(s) ——的情况经常发生,典型的有:string 类。
2. STL中的 string 类太复杂,copy on write 等等特性。
3. 采用“防卫式头文件声明”。
4. s2 赋值给 s3。
String s3("hello"), s2; s3 = s2;
5. complier 会默认生成:拷贝构造函数 和 拷贝赋值函数(操作符重载),其执行的原理是按位依次赋值。带指针的类不适合使用默认的构造函数。
class String { public: String (const String& str); //拷贝构造函数 String& operator= (const String& str); //拷贝赋值函数 } String s3(s1); //拷贝构造 String s2 = s3; //拷贝赋值
6. String 类实现原理
class String { public: String(const char* cstr=0); private: char* m_data; //指针动态分配存储空间 } String::String(const char* cstr) { if (cstr) { m_data = new char[strlen(cstr)+1]; strcpy(m_data, cstr); } else { m_data = new char[1]; *m_data = '