类的深度复制

class String{
   private:
       char* m_Buffer;
       unsigned int m_Size;
   public:
       String(const char* string){//首先const char* 等同于string
           m_Size=int(strlen(string));//因为64位的strlen是unisigned long
           m_Buffer=new char[m_Size+1];
           memcpy(m_Buffer,string,m_size);
           m_Buffer[m_Size]=0;
       }
       String(const String& other):m_Size(other.m_Size){//深拷贝
           m_Buffer=new char[m_Size+1];
           memcpy(m_Buffer,other.m_Buffer.m_Size+1);
       }
       char& operator[](unsigned int index){//重载符号
           return m_Buffer[index];
       }
       friend std::ostream& operator<<(std::ostream& stream,const String& string);
};
std::ostream& operator<<(std::ostream& stream,const String& string){
    stream<<string.m_Buffer;
    return stream;
}
int main(){
    String string="wkx";
    String s=string;
    s[0]=c;
    std::cout<<string<<std::endl;
    std::cout<<s<<std::endl;
    std::cin.get();
}

 

posted @ 2023-09-05 16:49  iu本u  阅读(17)  评论(0)    收藏  举报