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

类string的构造函数、拷贝构造函数和析构函数

引用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

转载于:https://www.cnblogs.com/zhizhan/p/4915502.html

类string的构造函数、拷贝构造函数和析构函数相关推荐

  1. 什么是拷贝构造函数?拷贝构造函数何时被调用

    1.什么是拷贝构造函数: CA(const CA& C)就是我们自定义的拷贝构造函数.可见,拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它的唯一的一个参数是本类型的一个引用变 ...

  2. 【C++】构造函数 无参构造函数 有参构造函数 拷贝构造函数内联函数

    文章目录 函数的定义 函数的的使用方法 函数的返回值 值传递 指针传递 引用传递 C++引用作为函数返回值 函数重载(Function Overloading) 运算符重载(Operator Over ...

  3. C++类与对象:程序片段编程题/汽车类的定义,拷贝构造函数,析构函数的定义

    定义一个汽车类Car,其成员数据包括汽车编号id.品牌brand.发动机动力power和载客人数numOfPersons, 实现一个打印自身信息的成员函数printCar(). 定义默认构造函数.带所 ...

  4. 函数返回类的对象与拷贝构造函数

    C++中,如果我们在一个函数中,定义了一个类的对象,然后返回这个对象,在main函数中用一个对象去接受这个返回的对象的时候,这里面参与的函数调用大家可能不熟悉,这里通过程序和注释的方式给大家讲解一下. ...

  5. C++编程思想 第1卷 第11章 引用和拷贝构造函数 拷贝构造函数 拷贝构造函数

    编译器对如何从现有的对象产生新的对象进行了假定. 当通过按值传递的方式传递一个对象时,就创立了一个新对象,函数体内的 对象是由函数体外的原来存在的对象传递的 编译器假定我们想使用位拷贝来创建对象 每当 ...

  6. C++ 笔记(17)— 类和对象(构造函数、析构函数、拷贝构造函数)

    1. 构造函数 构造函数是一种特殊的函数(方法),在根据类创建对象时被调用.构造函数是一种随着对象创建而自动被调用的函数,它的主要用途是为对象作初始化. 构造函数的名称与类的名称是完全相同的,并且不会 ...

  7. String 的普通构造函数、拷贝构造函数、析构函数、赋值函数

    转自:http://blog.csdn.net/xiaoxiangzhu660810/article/details/8149398 题目:编写类String的构造函数.析构函数和赋值函数,已知类St ...

  8. 类的6个默认成员函数:构造函数、析构函数、拷贝构造函数、重载运算符、三/五法则

    文章目录 6个默认成员函数 构造函数 概念 默认构造函数的类型 默认实参 概念 默认实参的使用 默认实参声明 全局变量作为默认实参 某些类不能依赖于编译器合成的默认构造函数 第一个原因 第二个原因 第 ...

  9. C++ 类和对象(二):构造函数、析构函数、拷贝构造函数、运算符重载

    构造函数 析构函数 拷贝构造函数 运算符重载 class Date {}; 可以看到,上面那个类没有任何成员,是一个空类,但是它真的什么都没有吗?其实一个类在我们不写的情况下,都会生成6个默认的成员函 ...

  10. 构造函数、拷贝构造函数、赋值函数和析构函数

    文章目录 一.构造函数 1.认识构造函数 2.初始化列表 二.拷贝构造函数 1.类对象的拷贝 2.浅拷贝和深拷贝 三.赋值函数 四.析构函数 1.认识析构函数 2.销毁,清理? 3.析构函数来阻止该类 ...

最新文章

  1. Flex Air程序打包成独立的exe安装文件
  2. 【基础】使用cookies,实现免登陆(七)
  3. knockoutjs ajax分页,KnockoutJS 3.X API 第四章之数据控制流foreach绑定
  4. 我的图床设置PicGo
  5. Elasticsearch7.15.2 分布式集群安装(linux环境)
  6. 第十二届蓝桥杯青少年python组 第1-3题 C++实现
  7. 使用Java实现发送email邮件
  8. CNN中卷积的学习笔记
  9. 第一阶段个人总结04
  10. 局域网打印机怎么连接_怎么连接同事已共享的打印机?
  11. unity投影和视频画面的调整
  12. Java访问剪切板API控制台输出莫名异常
  13. 【知识总结】有关前端安全的面试题总结
  14. python 阮一峰_ES6 Iterator笔记(摘抄至阮一峰的ECMAScript 6入门)
  15. 洛谷 P3939 数颜色
  16. 六年如逆旅,我亦是行人:一个顾问的六年安全从业经历
  17. aps是什么意思_轿车里面的APS是什么意思 ?
  18. Dropbox一款很实用的个人文件同步利器
  19. 奇点临近:互联网经济的供给侧革命和全球货币政策的新格林斯潘之谜
  20. nz-select 选择器

热门文章

  1. 衡量模块独立性的两个定性标准
  2. Kaggle-泰坦尼克号
  3. activemq控制发送频率_发送activemq
  4. stringbuffer常用方法_第八讲:常用类库API
  5. vs2017python开发_VS2017作为python开发的IDE
  6. 01算法 java_蓝桥杯:基础练习 01字串【JAVA算法实现】
  7. 360浏览器 ajax取缓存,web开发遇到的坑之360浏览器缓存问题
  8. linux安装pgsql源码包解压,在Linux(centos)中使用源码安装pgRouting
  9. 产品人如何在小企业中夹缝生存?
  10. 互联网晚报 | 9月22日 星期三 | 中国电信控股股东拟40亿元增持;碧桂园服务100亿收购富良环球;搜狗浏览器论坛即将下线...