实现一个自己的String类是一道考验C++基础知识的好题。
至少要能实现以下:构造函数,析构函数,拷贝构造函数(copy constructor),重载赋值操作符(copy assignment operator),。
首先是至少能够准确的写出这几个函数的声明。
class String { public: String(); String(const char *); //旧写法: //String(const String& rhs); //String& operator=(const String& rhs); //新写法: String(String rhs); String& operator=(String rhs); ~String(); private: char* data_; }
String::String(const String& rhs) { if (&rhs!=this) { delete [] data_; data_ = new char[rhs.size() + 1]; memcpy(data_, rhs.c_str(), rhs.size()); } return *this; } String::~String() { delete [] data_; }
String::String(String rhs) { std::swap(data_, rhs.data_); } String::String& operator=(String rhs) { std::swap(data_, rhs.data_); return *this; } String::String() : data_ = new char[1]{ *data_ = '\0'; }