String建構函式 拷貝建構函式 解構函式 賦值建構函式的實現
阿新 • • 發佈:2019-02-09
標題:String函式的實現-->主要實現建構函式,拷貝建構函式,解構函式,賦值建構函式。這幾個函式是字串函式最基本的函式,今天也總結一下
#include<iostream> using namespace std; #include<string.h> class MyString { private: char *str; public: MyString(const char *pStr)//建構函式 { if(pStr==NULL) { str=new char[1]; *str='\0'; } else { str=new char[strlen(pStr)+1]; strcpy(str,pStr); } } MyString(const MyString &other)//拷貝建構函式,必須用引用傳遞, //如果不用引用傳遞將會出現無限遞迴迴圈 { if(this==&other) return; str=new char[strlen(other.str)+1]; strcpy(str,other.str); } ~MyString()//解構函式 { delete []str; str=NULL;//防止野指標 } //最簡單直接的寫法(賦值函式)用引用返回為了連續賦值 /*MyString& operator=(const MyString &other) { if(this != &other) { delete []str; str=new char[strlen(other.str)+1]; strcpy(str,other.str); } return *this; }*/ //高階程式設計師的寫法(賦值函式) MyString& operator=(const MyString &other) { if(this != &other) { MyString Tmp(other);//交換指向的地址,然後退出if語句後自動呼叫解構函式釋放之前的記憶體 char *ret=Tmp.str; Tmp.str=str; str=ret; } return *this;//返回*this } void show()const { cout<<"str="<<str<<endl; } };