String字符串类实现

来源:互联网 发布:linux七日杀服务器 编辑:程序博客网 时间:2024/06/01 07:32

1、

class String{public:    String(const char *str = null);//普通构造函数    String(const String& other);//拷贝构造函数    ~String();//析构函数    String& operator = (const String& other);//赋值函数private:    char *m_data;};

2、构造函数

String::String(const char *str){    if(str == NULL)    {        m_data = new char[1];        *m_data = '\0';    }    else    {        m_data = new char[strlen(str)+1];        strcpy(m_data,str);    }}
string str("hell0");

3、析构函数

String::~String(){    delete [] m_data;}

4、拷贝构造

String::String(const String &other){    m_data = new char[strlen(other.m_data)+1];    strcpy(m_data,other.m_data);}
string s1("hello");string s2=s1;

5、赋值操作符

String& String::operator=(const String &other){    //检查自赋值    if(this == &other)        return *this;    delete[] m_data;//释放原有内存资源    m_data = new char[strlen(other.m_data)+1];    strcpy(m_data,other.m_data);    return *this;//返回本对象的引用}
string s1("hello");string s2;s2 = s1;

6、赋值操作符的

如果不加const的话:string s3("pello");const string s4("qello");s3 = s4;这样就会,因为一个 const 变量不能随意转化成非const变量另外,string s7("pello");string s8("pellp");string s9("qellp");s9 = s7+s8;不用const 会报错,因为 + 赋值必须返回一个操作值已知的string对象 ,除非他是一个const对象
原创粉丝点击