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


Posted in 面试题 onSeptember 09, 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...

面试题 相关文章推荐
PHP经典面试题
Sep 03 面试题
怎样比较两个类型为String的字符串
Aug 17 面试题
说出ArrayList,Vector, LinkedList的存储性能和特性
Jan 04 面试题
Java如何格式化日期
Aug 07 面试题
JSF面试题:Jsf中导航的标签是什么
Apr 20 面试题
关于Java String的一道面试题
Sep 29 面试题
阿尔卡特(中国)的面试题目
Aug 20 面试题
一篇.NET面试题
Sep 29 面试题
如何用Python输出一个Fibonacci数列
Aug 28 面试题
JAVA程序设计笔试题面试题一套
Jul 28 面试题
四种会话跟踪技术
May 20 面试题
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
May 01 面试题
编写strcpy函数
Jun 24 #面试题
C/C++ 笔试、面试题目大汇总
Nov 21 #面试题
统计每一学生的平均成绩
Jun 06 #面试题
文件中有一组整数,要求排序后输出到另一个文件中
Jan 04 #面试题
上海奥佳笔试题面试题
Nov 16 #面试题
将一个文本文件的内容按倒序打印出来
Jan 05 #面试题
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
Aug 04 #面试题
You might like
PHP 程序员的调试技术小结
2009/11/15 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
JavaScript Array扩展实现代码
2009/10/14 Javascript
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
js实现图片轮播效果
2015/12/19 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
详解js创建对象的几种方法及继承
2019/04/12 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
python使用pil生成图片验证码的方法
2015/05/08 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
pip安装py_zipkin时提示的SSL问题对应
2018/12/29 Python
python使用thrift教程的方法示例
2019/03/21 Python
Python 共享变量加锁、释放详解
2019/08/28 Python
Python单元测试与测试用例简析
2019/11/09 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
Python更新所有已安装包的操作
2020/02/13 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
Python如何在bool函数中取值
2020/09/21 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
村官学习十八大感想
2014/01/15 职场文书
卫生安全检查制度
2014/02/04 职场文书
40岁生日感言
2014/02/15 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python