类string的构造函数、拷贝构造函数和析构函数
类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.什么是拷贝构造函数: CA(const CA& C)就是我们自定义的拷贝构造函数.可见,拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它的唯一的一个参数是本类型的一个引用变 ...
- 【C++】构造函数 无参构造函数 有参构造函数 拷贝构造函数内联函数
文章目录 函数的定义 函数的的使用方法 函数的返回值 值传递 指针传递 引用传递 C++引用作为函数返回值 函数重载(Function Overloading) 运算符重载(Operator Over ...
- C++类与对象:程序片段编程题/汽车类的定义,拷贝构造函数,析构函数的定义
定义一个汽车类Car,其成员数据包括汽车编号id.品牌brand.发动机动力power和载客人数numOfPersons, 实现一个打印自身信息的成员函数printCar(). 定义默认构造函数.带所 ...
- 函数返回类的对象与拷贝构造函数
C++中,如果我们在一个函数中,定义了一个类的对象,然后返回这个对象,在main函数中用一个对象去接受这个返回的对象的时候,这里面参与的函数调用大家可能不熟悉,这里通过程序和注释的方式给大家讲解一下. ...
- C++编程思想 第1卷 第11章 引用和拷贝构造函数 拷贝构造函数 拷贝构造函数
编译器对如何从现有的对象产生新的对象进行了假定. 当通过按值传递的方式传递一个对象时,就创立了一个新对象,函数体内的 对象是由函数体外的原来存在的对象传递的 编译器假定我们想使用位拷贝来创建对象 每当 ...
- C++ 笔记(17)— 类和对象(构造函数、析构函数、拷贝构造函数)
1. 构造函数 构造函数是一种特殊的函数(方法),在根据类创建对象时被调用.构造函数是一种随着对象创建而自动被调用的函数,它的主要用途是为对象作初始化. 构造函数的名称与类的名称是完全相同的,并且不会 ...
- String 的普通构造函数、拷贝构造函数、析构函数、赋值函数
转自:http://blog.csdn.net/xiaoxiangzhu660810/article/details/8149398 题目:编写类String的构造函数.析构函数和赋值函数,已知类St ...
- 类的6个默认成员函数:构造函数、析构函数、拷贝构造函数、重载运算符、三/五法则
文章目录 6个默认成员函数 构造函数 概念 默认构造函数的类型 默认实参 概念 默认实参的使用 默认实参声明 全局变量作为默认实参 某些类不能依赖于编译器合成的默认构造函数 第一个原因 第二个原因 第 ...
- C++ 类和对象(二):构造函数、析构函数、拷贝构造函数、运算符重载
构造函数 析构函数 拷贝构造函数 运算符重载 class Date {}; 可以看到,上面那个类没有任何成员,是一个空类,但是它真的什么都没有吗?其实一个类在我们不写的情况下,都会生成6个默认的成员函 ...
- 构造函数、拷贝构造函数、赋值函数和析构函数
文章目录 一.构造函数 1.认识构造函数 2.初始化列表 二.拷贝构造函数 1.类对象的拷贝 2.浅拷贝和深拷贝 三.赋值函数 四.析构函数 1.认识析构函数 2.销毁,清理? 3.析构函数来阻止该类 ...
最新文章
- Flex Air程序打包成独立的exe安装文件
- 【基础】使用cookies,实现免登陆(七)
- knockoutjs ajax分页,KnockoutJS 3.X API 第四章之数据控制流foreach绑定
- 我的图床设置PicGo
- Elasticsearch7.15.2 分布式集群安装(linux环境)
- 第十二届蓝桥杯青少年python组 第1-3题 C++实现
- 使用Java实现发送email邮件
- CNN中卷积的学习笔记
- 第一阶段个人总结04
- 局域网打印机怎么连接_怎么连接同事已共享的打印机?
- unity投影和视频画面的调整
- Java访问剪切板API控制台输出莫名异常
- 【知识总结】有关前端安全的面试题总结
- python 阮一峰_ES6 Iterator笔记(摘抄至阮一峰的ECMAScript 6入门)
- 洛谷 P3939 数颜色
- 六年如逆旅,我亦是行人:一个顾问的六年安全从业经历
- aps是什么意思_轿车里面的APS是什么意思 ?
- Dropbox一款很实用的个人文件同步利器
- 奇点临近:互联网经济的供给侧革命和全球货币政策的新格林斯潘之谜
- nz-select 选择器
热门文章
- 衡量模块独立性的两个定性标准
- Kaggle-泰坦尼克号
- activemq控制发送频率_发送activemq
- stringbuffer常用方法_第八讲:常用类库API
- vs2017python开发_VS2017作为python开发的IDE
- 01算法 java_蓝桥杯:基础练习 01字串【JAVA算法实现】
- 360浏览器 ajax取缓存,web开发遇到的坑之360浏览器缓存问题
- linux安装pgsql源码包解压,在Linux(centos)中使用源码安装pgRouting
- 产品人如何在小企业中夹缝生存?
- 互联网晚报 | 9月22日 星期三 | 中国电信控股股东拟40亿元增持;碧桂园服务100亿收购富良环球;搜狗浏览器论坛即将下线...