编写类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...

面试题 相关文章推荐
怎么处理XML的中文问题
Mar 26 面试题
对于没有初始化的变量的初始值可以作怎样的假定
Oct 12 面试题
武汉高蓝德国际.net机试
Jun 24 面试题
如何判断计算机可能已经中马
Mar 22 面试题
Can a struct inherit from another class? (结构体能继承类吗)
Jul 22 面试题
params有什么用
Mar 01 面试题
C#如何判断当前用户是否输入某个域
Dec 07 面试题
Shell编程面试题
May 30 面试题
常用UNIX 命令(Linux的常用命令)
Jul 10 面试题
进程的查看和调度分别使用什么命令
Mar 25 面试题
MYSQL相比于其他数据库有哪些特点
Jul 19 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
Feb 17 面试题
编写strcpy函数
Jun 24 #面试题
C/C++ 笔试、面试题目大汇总
Nov 21 #面试题
统计每一学生的平均成绩
Jun 06 #面试题
文件中有一组整数,要求排序后输出到另一个文件中
Jan 04 #面试题
上海奥佳笔试题面试题
Nov 16 #面试题
将一个文本文件的内容按倒序打印出来
Jan 05 #面试题
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
Aug 04 #面试题
You might like
php设置允许大文件上传示例代码
2014/03/10 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
2017/05/20 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
jQuery取消ajax请求的方法
2015/06/09 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
使用Python生成url短链接的方法
2015/05/04 Python
python导入模块交叉引用的方法
2019/01/19 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
Python进度条的制作代码实例
2019/08/31 Python
python绘制雪景图
2019/12/16 Python
python求解汉诺塔游戏
2020/07/09 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
德国家具在线:Fashion For Home
2017/03/11 全球购物
allbeauty美国:英国在线美容店
2019/03/11 全球购物
北京华建集团SQL面试题
2014/06/03 面试题
.net面试题
2016/09/17 面试题
美容院考勤制度
2014/01/30 职场文书
个人对照检查材料
2014/02/12 职场文书
优秀语文教师事迹
2014/05/18 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
假期读书倡议书3篇
2019/08/19 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
Python 的 sum() Pythonic 的求和方法详细
2021/10/16 Python
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技