【牛客帶你學程式設計C++方向】專案練習第1期
阿新 • • 發佈:2019-02-03
//普通構造
MyString::MyString(const char *str){
if(str == NULL){
m_data = new char[1]; //對空字串自動申請存放結束標誌'\0'的空
*m_data = '\0';
}
else{
int length = strlen(str);
m_data = new char[length+1];
strcpy(m_data,str);
}
}
//拷貝構造
MyString::MyString(const MyString &other){
int length = strlen(other.m_data);
m_data = new char[length+1];
strcpy(m_data,other.m_data);
}
//解構函式
MyString::~MyString(){
delete [] m_data; //[]:一組物件
}
//賦值函式
MyString & MyString::operator = (const MyString &other){ //輸入引數為const型
if(this == &other) //檢查自賦值
return *this ;
delete [] m_data; //釋放原有記憶體
int length = strlen(other.m_data);
m_data = new char[length+1]; //對m_data加NULL,判斷
strcpy(m_data,other.m_data);
return *this; //返回本物件的引用
}
補充:
MyString mys1,mys3;
MyString mys2 = mys1; //拷貝構造
mys3 = mys2; //賦值拷貝