Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2418302
  • 博文数量: 392
  • 博客积分: 7040
  • 博客等级: 少将
  • 技术积分: 4138
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-17 13:03
个人简介

范德萨发而为

文章分类

全部博文(392)

文章存档

2017年(5)

2016年(19)

2015年(34)

2014年(14)

2013年(47)

2012年(40)

2011年(51)

2010年(137)

2009年(45)

分类: C/C++

2010-09-15 17:13:59

String 类的原型如下

class String
{
   public:
          String(const char *str=NULL); //
构造函数
          String(const String &other); //
拷贝构造函数
          ~String(void); //
析构函数
          String& operator=(const String &other); //
等号操作符重载

          ShowString();


   private:
          char *m_data; //
指针
};


String::~String()
{
    delete [] m_data; //
析构函数,释放地址空间
}
String::String(const char *str)
{
    if (str==NULL)//
当初始化串不存在的时候,为m_data申请一个空间存放'\0'
     {
        m_data=new char[1];
        *m_data='\0';
     }
    else//
当初始化串存在的时候,为m_data申请同样大小的空间存放该串;
     {
        int length=strlen(str);
        m_data=new char[length+1];
        strcpy(m_data,str);
     }
}


String::String(const String &other)//
拷贝构造函数,功能与构造函数类似。
{
    int length=strlen(other.m_data);
    m_data=new [length+1];
    strcpy(m_data,other.m_data);
}
String& String::operator =(const String &other)
{
    if (this==&other)//
当地址相同时,直接返回;
        return *this; 
 
    delete [] m_data;//
当地址不相同时,删除原来申请的空间,重新开始构造;

    int length=sizeof(other.m_data);
    m_data=new [length+1];
    strcpy(m_data,other.m_data);

    return *this; 
}

 

String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问;

{

      cout<m_data<

}

 

 

 

main()
{
String AD;
char * p="ABCDE";
String B(p);
AD.ShowString();
AD=B;
AD.ShowString();


}

 

阅读(973) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~