1. 程式人生 > >【牛客帶你學程式設計C++方向】專案練習第1期

【牛客帶你學程式設計C++方向】專案練習第1期

題目如下

//普通構造 
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; //賦值拷貝