zoukankan      html  css  js  c++  java
  • 类string的构造函数、拷贝构造函数和析构函数 (转)

    http://www.cnblogs.com/Laokong-ServiceStation/archive/2011/04/19/2020402.html

    引用http://www.cppblog.com/life02/archive/2011/03/07/96085.html  在这个帖子的基础上稍微添加修改了点内容。

    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= strlen (other.m_data);
        m_data=new [length+1];
        strcpy(m_data,other.m_data);

        return *this; 
    }

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

    {

             cout<<this->m_data<<endl;

    }

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


    }

    1. strCopy 函数可以为标准库函数 char *strcpy(char *dest, const char *src); 

        需要#inculde <string.h>

    2.参考连接:

       高质量C++C编程指南 http://man.chinaunix.net/develop/c&c++/c/c.htm

        字符串函数 http://www.ggv.com.cn/forum/clib/string/strcpy.html

  • 相关阅读:
    Swagger2文档生成器
    SSM中spring配置文件
    REDTful风格设计接口
    xss练习
    使用burp绕过token爆破用户名密码
    简单的内网渗透实验
    XSS Challenges
    一次简单的渗透
    vim进阶学习
    kali的部分学习
  • 原文地址:https://www.cnblogs.com/wb118115/p/2760533.html
Copyright © 2011-2022 走看看