技术在于交流、沟通,转载请注明出处并保持作品的完整性。
概要
一.拷贝构造
二.拷贝赋值
三.重写操作符
四.生命周期
本节主要介绍 Big Three 即析构函数,拷贝构造函数,赋值拷贝函数,前面主要围绕不带指针的class complex本节中主要围绕带指针的String类
前面我说过如果你创建的类不带有指针,那么多半你可以不用写析构函数,但是如果你创建了一个带指针的类,那么你必须重写Big Three
创建一个类
class String { public: String(const char* cstr=0); String(const String& str); String& operator=(const String& str); ~String(); char* get_c_str() const { return m_data; } private: char* m_data; //由于带有指针 ,所以需要重写析构函数,拷贝构造,赋值拷贝 };
一.拷贝构造
如下操作会调用拷贝构造函数
String a{"hello"};
它的实现为
inline 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 = '