本文只實現String類的構造函數、析構函數、賦值構造函數和賦值函數,其餘操做再也不詳述,通常的筆試面試基本上也只會要求實現這四個函數的功能。ios
#include <iostream> using namespace std; class String { public: // 構造函數 String(const char *str=NULL); // 拷貝構造函數 String(const String& other); // 賦值函數 String& operator =(const String &other); // 析構函數 ~String(void); private: char *data; }; String::String(const char * str) { if (str == NULL) { data = new char[1]; *data = '\0'; } else { int len = strlen(str) + 1; data = new char[len]; strcpy(data, str); } } String::String(const String& other) { int len = strlen(other.data) + 1; data = new char[len]; strcpy(data, other.data); } String & String::operator=(const String& other) { // 判斷是否是自賦值 if (this == &other) return *this; delete[]data; int len = strlen(other.data) + 1; data = new char[len]; strcpy(data, other.data); // 返回本對象的引用 return *this; } String::~String() { delete[]data; }