#include <utility> #include <string.h> class string{public:string (): Data_ (new char[1]) {*data_ = ' "; } String (const char* str): Data_ (new Char[strlen (str) + 1]) {strcpy (Data_, str); } String (const string& RHS): Data_ (New Char[rhs.size () + 1]) {strcpy (Data_, Rhs.c_str ()); }/* Delegate constructor in c++11 string (const string& RHS): string (rhs.data_) {} */~string () {dele Te[] Data_; }/* traditional:string& operator= (const string& RHS) {String tmp (RHS); Swap (TMP); return *this; } */string& operator= (String RHS)//Yes, Pass-by-value {swap (RHS); return *this; }//C + + String (string&& RHS): Data_ (rhs.data_) {rhs.data_ = nullptr; } string& operator= (string&& rhs) {swap (RHS); return *this; }//accessors size_t size () const {return strlen (Data_); } const char* C_STR () const {return data_; } void Swap (string&amP RHS) {Std::swap (Data_, Rhs.data_); } private:char* Data_;};
The string class of C + + face question