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

面试题 相关文章推荐
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
Jul 17 面试题
C语言怎样定义和声明全局变量和函数最好
Nov 26 面试题
武汉东之林科技有限公司机试
Sep 17 面试题
STP协议的主要用途是什么?为什么要用STP
Dec 20 面试题
网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
Mar 27 面试题
C#里面如何判断一个Object是否是某种类型(如Boolean)?
Feb 10 面试题
什么是Linux虚拟文件系统VFS
Aug 25 面试题
东方红海科技面试题软件测试方面
Feb 08 面试题
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Jan 27 面试题
代码中finally中的代码会不会执行
Feb 06 面试题
Jdbc数据访问技术面试题
Mar 30 面试题
J2EE包括哪些技术
Nov 25 面试题
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实现图象锐化代码
2007/06/14 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
2013/09/21 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
JS简单实现点击复制链接的方法
2016/08/03 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
python 求定积分和不定积分示例
2019/11/20 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
python logging 日志的级别调整方式
2020/02/21 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
介绍一下游标
2012/01/10 面试题
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
销售员自我评价怎么写
2013/09/19 职场文书
中国好声音华少广告词
2014/03/17 职场文书
美食节策划方案
2014/05/26 职场文书
2014年实验室工作总结
2014/12/03 职场文书
浅谈克隆 JavaScript
2021/11/02 Javascript