1.赋值运算符函数

来源:互联网 发布:知柏地黄丸多少钱一盒 编辑:程序博客网 时间:2024/05/25 08:12
#include <iostream>#include <cstring>#include <utility>      // std::swapusing namespace std;class MyString{public:    MyString(char* pData=nullptr);    MyString(const MyString& ms);    ~MyString(){ delete[] m_pData;}    MyString& operator= (const MyString& ms);    friend ostream& operator<<(ostream& o, const MyString& ms);private:    char* m_pData;};MyString::MyString(char* pData){    if(pData)    {        m_pData = new char[strlen(pData)+1];        strcpy(m_pData, pData);    }    else    {        m_pData = new char[1];        m_pData[0] = '\0';    }}MyString::MyString(const MyString& ms){    m_pData = new char[strlen(ms.m_pData)+1];    strcpy(m_pData, ms.m_pData);}MyString& MyString::operator=(const MyString& ms){    MyString tmp(ms);    swap(m_pData, tmp.m_pData);    return *this;}ostream& operator<<(ostream& o, const MyString& ms){    o<<ms.m_pData;    return o;}int main(){    char p1[] = "s1";    char p2[] = "s2";    MyString s1(p1);    MyString s2(p2);    MyString s3(s2);    //s1 = s2 = s3;    cout<<s1<<s3;    return 0;}
1 0
原创粉丝点击