c++ String普通构造函数,拷贝构造函数,赋值函数书写

来源:互联网 发布:福州地铁软件 编辑:程序博客网 时间:2024/05/01 08:47
#include <iostream>using namespace std;class String{public:String(const char* str = NULL); //普通构造函数String(const String& other); //拷贝构造函数~String(); //析构函数String& operator = (const String& other); //赋值char* toString(){return m_data;}private:char* m_data;};String::String(const char* str){    if(str == NULL){m_data = new char[1];*m_data = '\0';}else{int length = strlen(str);m_data = new char[length+1];if(m_data == NULL){printf("don't have enough memory!");}strcpy(m_data, str);}}String::~String(){if(m_data != NULL)    delete[] m_data;}String::String(const String& other){int length = strlen(other.m_data); //私有m_data可以直接访问?m_data = new char[length + 1];    if(m_data == NULL){printf("don't have enough memory!");}strcpy(m_data, other.m_data);}String& String::operator = (const String& other){if(this == &other)return *this;delete[] m_data;int length = strlen(other.m_data);m_data = new char[length+1];strcpy(m_data, other.m_data);return *this;}void main(){    String s("123"); //普通printf("%s\n", s.toString());String s1(s); //拷贝    printf("%s\n", s1.toString());String s2 = s; //赋值printf("%s\n", s2.toString());}/*123123*/

0 0
原创粉丝点击