您的位置:首页 > 其它

自定义String类

2015-09-11 11:15 232 查看
自己定义string类,需要注意的几点:默认构造函数的编写,m_data[0]=‘\0’,拷贝构造函数的引用参数,防止无线递归调用;

拷贝构函数:四种情况

string a=b;

string a(b);

void ss(stirng a)

string sss()

#include<iostream>

#include<cstring>

using namespace std;

class MyString

{

public:

MyString(const char *str=NULL);

MyString(const MyString &);

MyString &operator =(const MyString &);

const char* operator<<(const MyString &);

~MyString();

void print();

private:

char *m_data;

};

MyString::MyString(const char *str)

{

if(str==NULL)

{

m_data= new char[1];

m_data[0]='\0';

}

else

{

m_data=new char[strlen(str)+1];

strcpy(m_data,str);

}

}

MyString::MyString(const MyString &rhs)

{

m_data=new char[strlen(rhs.m_data)+1];

strcpy(m_data,rhs.m_data);

}

MyString& MyString::operator=(const MyString &rhs)

{

if(this==&rhs)

{

return *this;

}

delete m_data;

m_data=new char[strlen(rhs.m_data)+1];

strcpy(m_data,rhs.m_data);

return *this;

}

MyString::~MyString()

{

delete []m_data;

}

const char* MyString::operator<<(const MyString &rhs)

{

return rhs.m_data;

}

void MyString::print()

{

cout<<m_data<<endl;

}

int main()

{

MyString s1;

s1.print();

MyString s2("abc");

s2.print();

MyString s3(s2);

s3.print();

MyString s4;

s4=s3;

s4.print();

system("pause");

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: