编写类String的构造函数、析构函数和赋值函数


Posted in 面试题 onMay 29, 2012
已知类String的原型为:
class String
{
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~ String(void); // 析构函数
String & operate =(const String &other); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
请编写String的上述4个函数。
标准答案:

// String的析构函数
String::~String(void) // 3分
{
delete [] m_data;
// 由于m_data是内部数据类型,也可以写成 delete m_data;
}

// String的普通构造函数
String::String(const char *str) // 6分
{
if(str==NULL)
{
m_data = new char[1]; // 若能加 NULL 判断则更好
*m_data = ‘\0’;
}
else
{
int length = strlen(str);
m_data = new char[length+1]; // 若能加 NULL 判断则更好
strcpy(m_data, str);
}
}
// 拷贝构造函数
String::String(const String &other) // 3分
{
int length = strlen(other.m_data);
m_data = new char[length+1]; // 若能加 NULL 判断则更好
strcpy(m_data, other.m_data);
}
// 赋值函数
String & String::operate =(const String &other) // 13分
{
// (1) 检查自赋值 // 4分
if(this == &other)
return *this;

// (2) 释放原有的内存资源 // 3分
delete [] m_data;

// (3)分配新的内存资源,并复制内容 // 3分
int length = strlen(other.m_data);
m_data = new char[length+1]; // 若能加 NULL 判断则更好
strcpy(m_data, other.m_data);

// (4)返回本对象的引用 // 3分
return *this;
}

Tags in this post...

面试题 相关文章推荐
Tomcat中怎么使用log4j输出所有的log
Jul 07 面试题
接口中的方法可以是abstract的吗
Jul 23 面试题
JAVA中的关键字有什么特点
Mar 07 面试题
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
Sep 11 面试题
杭州-飞时达软件有限公司.net笔面试
Apr 28 面试题
星空联盟C# .net笔试题
Dec 05 面试题
linux面试题参考答案(8)
Apr 19 面试题
Linux如何修改文件和文件夹的权限
Sep 05 面试题
软件测试题目
Feb 27 面试题
如何写一个Java类既可以用作applet也可以用作java应用
Jan 18 面试题
Java语言的优势
Jan 10 面试题
J2EE相关知识面试题
Aug 26 面试题
C++:memset ,memcpy和strcpy的根本区别
Apr 27 #面试题
C++的几个面试题附答案
Aug 03 #面试题
为什么会有内存对齐
Oct 10 #面试题
数组越界问题
Oct 21 #面试题
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
Feb 22 #面试题
介绍一下#error预处理
Sep 25 #面试题
const char*, char const*, char*const的区别是什么
Jul 09 #面试题
You might like
php模拟登陆的实现方法分析
2015/01/09 PHP
php实现mysql数据库分表分段备份
2015/06/18 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
python生成excel的实例代码
2017/11/08 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
Linux下python3.7.0安装教程
2018/07/30 Python
Python将8位的图片转为24位的图片实现方法
2018/10/24 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
python圣诞树编写实例详解
2020/02/13 Python
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
英语专业推荐信
2013/11/16 职场文书
企业活动策划方案
2014/06/02 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
优秀团员事迹材料
2014/12/25 职场文书
刘公岛导游词
2015/02/05 职场文书
世界遗产导游词
2015/02/13 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
七年级作文之环保作文
2019/10/17 职场文书
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS