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

面试题 相关文章推荐
mysql_pconnect()和mysql_connect()有什么区别
May 25 面试题
华为的Java面试题
Mar 07 面试题
C/C++程序员常见面试题一
Dec 08 面试题
枚举和一组预处理的#define有什么不同
Sep 21 面试题
一组SQL面试题
Feb 15 面试题
武汉东之林科技有限公司机试
Sep 17 面试题
如何查找网页漏洞
Jun 22 面试题
C#里面如何倒序排列一个数组的元素?
Jun 21 面试题
通用C#笔试题附答案
Nov 26 面试题
常用UNIX 命令(Linux的常用命令)
Dec 26 面试题
Python的两道面试题
Jun 29 面试题
什么是方法的重载
Jun 24 面试题
编写strcpy函数
Jun 24 #面试题
C/C++ 笔试、面试题目大汇总
Nov 21 #面试题
统计每一学生的平均成绩
Jun 06 #面试题
文件中有一组整数,要求排序后输出到另一个文件中
Jan 04 #面试题
上海奥佳笔试题面试题
Nov 16 #面试题
将一个文本文件的内容按倒序打印出来
Jan 05 #面试题
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
Aug 04 #面试题
You might like
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
php 破解防盗链图片函数
2008/12/09 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
JS前端笔试题分析
2016/12/19 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
浅谈node的事件机制
2017/10/09 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
Python中字符串的常见操作技巧总结
2016/07/28 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
全球性的女装店:storets
2019/06/12 全球购物
教育学专业实习生的自我鉴定
2013/11/26 职场文书
元旦获奖感言
2014/03/08 职场文书
经销商年会策划方案
2014/05/29 职场文书
机械专业求职信范文
2014/07/15 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
红色故事汇观后感
2015/06/18 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
关于MySQL中explain工具的使用
2023/05/08 MySQL