String类的简易实现(C++语言)

来源:互联网 发布:c51单片机c语言教程 编辑:程序博客网 时间:2024/06/01 10:05
#include <iostream>using namespace std;class String {public:String(const char *str);String(const String &);String();~String();String & operator =(const String &);String operator+(const String &);public:char *m_data;};ostream & operator<<(ostream & os,const String &me);String::~String(){cout <<"desctruct function"<<endl;delete m_data;}String::String(){cout << "construct ()"<<endl;m_data = 0;}String::String(const char *str){int len = strlen(str);cout << "construct (char *)"<<endl;m_data = (char *)malloc(sizeof(char)*(len + 1));strcpy(m_data,str);}String::String(const String &str){int sz = strlen(str.m_data);cout << "construct (String &)"<<endl;m_data = (char *)malloc(sizeof(char )*(sz + 1));strcpy(m_data,str.m_data);}String & String::operator=(const String &str){if(this == &str)return *this;delete m_data;int sz = strlen(str.m_data);m_data = (char *)malloc(sizeof(char )*(sz + 1));strcpy(m_data,str.m_data);}ostream & operator<<(ostream & os,const String &me){os << me.m_data;return os;}String String::operator+(const String &s2){String s;int sz = strlen(this->m_data) + strlen(s2.m_data);s.m_data = (char *)malloc(sizeof(char )*(sz + 1));strcpy(s.m_data,m_data);strcat(s.m_data,s2.m_data);return s;}int main(int argc, char *argv[]){String st1,st2("hello world!");st1 = st2;String s = st1 + st2;cout << s << endl;return 0;}

原创粉丝点击