标签:
#include<iostream> using namespace std; class String { public: String() { _ptr = new char[1]; _ptr[0] = 0; } String(const char* str) { _ptr = new char[strlen(str)+1]; strcpy(_ptr,str); } String(const String& str) { _ptr = new char[strlen(str._ptr)+1]; strcpy(_ptr,str._ptr); } String& operator =(const String& str ) { if(this != &str) { delete []_ptr; _ptr = new char[strlen(str._ptr)+1]; strcpy(_ptr,str._ptr ); } return *this; } ~String() { delete []_ptr; } char* GetStr() { return _ptr; } private: char* _ptr; }; int main() { String s1; cout<<"s1:"<<s1.GetStr()<<endl; String s2("abcd"); cout<<"s2:"<<s2.GetStr()<<endl; String s3("1234"); cout<<"s3:"<<s3.GetStr()<<endl; String s4(s2); cout<<"s4:"<<s4.GetStr()<<endl; s2 = s3; cout<<"s2:"<<s2.GetStr()<<endl; getchar(); return 0; }
String的优化版
#include <iostream> using namespace std; class String { public: String(char* str) :_ptr(new char[strlen(str) + 1]) { strcpy(_ptr, str); } void Swap(String& s) { char* tmp = s._ptr; s._ptr = _ptr; _ptr = tmp; } String(const String& s) :_ptr(NULL) { String tmp(s._ptr); Swap(tmp); } //String& operator=(const String& s) //{ // if (this != &s) // { // String tmp(s._ptr); // this->Swap(tmp); // } // return *this; //} String& operator=(String s) { // Swap(s); return *this; } //String& operator=(const String& s) //{ // if (this != &s) // { // delete [] _ptr; // _ptr = new char[strlen(s._ptr) + 1]; // strcpy(_ptr, s._ptr); // } // return *this; //} ~String() { if (_ptr) { delete[] _ptr; } } // 四个默认成员函数 + operator[] char* GetStr() { return _ptr; } private: char* _ptr; }; int main() { String s1("abcd"); String s2(s1); String s3("efghs"); s3 = s2; s2 = s2; cout<<"s1:"<<s1.GetStr()<<endl; cout<<"s2:"<<s2.GetStr()<<endl; cout<<"s3:"<<s3.GetStr()<<endl; return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/liuxiaoqian_/article/details/47983679