混迹于C++之继承机制中的构造器和析构器

来源:互联网 发布:windows 查看mac地址 编辑:程序博客网 时间:2024/05/21 13:21

继承机制中的构造器和析构器

摘自《高质量程序设计指南》

#include <iostream>#include <string.h>using namespace std;class String{public:String(const char *str="");//默认构造函数String(const String& copy);//拷贝构造函数~String();//析构函数String& operator=(const String& assign);private:  size_t m_size;//保存当前长度  char   *m_data;//指向当前字符串的指针};//String 的默认构造函数String::String(const char *str){  if(str == NULL)    {      m_data=new char[1];      *m_data='\0';      m_size=0;    }  else    {      int length=strlen(str);      m_data=new char[length+1];      strcpy(m_data,str);      m_size=length;    }}String::String(const String& other)//拷贝构造函数{  //提示:允许操作other的私有成员m_data  size_t len = strlen(other.m_data);  m_data = new char[len+1];  strcpy(m_data,other.m_data);  m_size = len;};String& String::operator=(const String& other)//拷贝赋值函数{   //(1)检查自赋值   if(this != &other){   //(2)分配新的内存资源,并复制内容       char *temp= new char[strlen(other.m_data)+1];       strcpy(temp,other.m_data);//copy '\0' together   //(3)释放原有的内存资源   delete []m_data;   m_data=temp;   m_size=strlen(other.m_data);   }   //(4)返回本对象的引用   return *this; };String::~String(void){  delete []m_data;}int main(){   String s;   return 0; }



原创粉丝点击