String的构造函数、析构函数和赋值函数
编写类String的构造函数、析构函数和赋值函数
已知类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)
{
delete [] m_data; // 由于m_data是基本数据类型的数组,也可以写成 delete m_data;
}
// String的普通构造函数
String::String(const char *str)
{
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)
{
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)
{
// (1) 检查自赋值
if(this == &other)
return *this;
// (2) 释放原有的内存资源
delete [] m_data;
// (3)分配新的内存资源,并复制内容
int length = strlen(other.m_data);
m_data = new char[length+1]; // 若能加 NULL 判断则更好
strcpy(m_data, other.m_data);
// (4)返回本对象的引用
return *this;
}
String的构造函数、析构函数和赋值函数的更多相关文章
- 编写类String 的构造函数、析构函数和赋值函数
		
编写类String 的构造函数.析构函数和赋值函数,已知类String 的原型为:class String{public:String(const char *str = NULL); // 普通构造 ...
 - C/C++面试题:编写类String的构造函数、析构函数和赋值函数。
		
转https://www.cnblogs.com/alinh/p/9636500.html 考点:构造函数.析构函数和赋值函数的编写方法出现频率:☆☆☆☆☆已知类String的原型为: ...
 - C++反汇编第一讲,认识构造函数,析构函数,以及成员函数
		
C++反汇编第一讲,认识构造函数,析构函数,以及成员函数 以前说过在C系列下的汇编,怎么认识函数.那么现在是C++了,隐含有构造和析构函数 一丶认识构造函数 高级代码: class MyTest { ...
 - 编写类String的构造函数、析构函数和赋值函数
		
已知类String的原型为: class String { public: String(const char *str = NULL); // 普通构造函数 String(const Str ...
 - 编写类String的构造函数、拷贝构造函数、析构函数和赋值函数
		
一.题目: class String { public: String(const char *str = NULL); // 普通构造函数 String(const String &othe ...
 - CPP_类默认函数:构造函数,拷贝构造函数,赋值函数和析构函数
		
类默认函数:构造函数,拷贝构造函数,赋值函数和析构函数 // person.h #ifndef _PERSON_H_ #define _PERSON_H_ class Person{ public : ...
 - C++(1)C++类四个默认函数---构造函数、析构函数、拷贝函数、赋值函数
		
C++构造函数和析构函数 默认构造函数指不带参数或者所有参数都有缺省值的构造函数!!! (1)构造函数.析构函数与赋值函数 构造函数.析构函数与赋值函数是每个类最基本的函数.它们太普通以致让人容易麻痹 ...
 - 关于C++中的拷贝构造函数和赋值函数
		
如果类定义的数据成员中存在指针或引用,那么最好重载这两个函数. 1. 定义 拷贝构造函数的定义格式:构造函数名(const 源类名& 引用对象形参名){} 赋值函数定义格式:源类名 & ...
 - String类的构造函数,析构函数、拷贝构造函数和赋值函数
		
(1)构造函数 String::String(const char *str) { if(str==NULL) { m_data = new char[1]; *m_data = ‘\0’; } el ...
 
随机推荐
- 图片的像素和Android的dp值之间的关系。
			
这是一个困扰我很就得问题.今天在我的反复摸索下,总结出了一些个规律. 以下测试以魅族mx5为例. 手机参数:5.5英寸:高:1920:宽1080. /** * 获得屏幕的宽度 * * @param c ...
 - 两个有序list合并
			
package 剑指office; import java.util.ArrayList; import java.util.List; public class ListMerge { /** * ...
 - ORA-600[kcratr_scan_lastbwr]逻辑坏块解决
			
数据库版本: 11.2.0.3 问题现象: 今天在启动一台测试数据库的时候,发现db不能open,报错如下: ERROR at line 1: ORA-00600: internal error co ...
 - jquery 自动调整图片大小
			
<script type="text/javascript"> $(document).ready(function(){ $('#cons img').each(fu ...
 - 获取ini文件所有的Sections和Keys
			
获取ini文件中所有的Sections和Keys,并以pair对的方式存入到vector中 #include <iostream> #include <windows.h> # ...
 - WEB开发之如何改善PHP开发方式
			
改善PHP开发方式一般可以分为以下几种实现方式: 1.组织和样式 找出一种适合你的组织方法和编码样式,并且一直坚持下去,这样的话,你的代码的组织和布局会变得十分有条理.我们不应该轻视代码的组织 ...
 - 5 Logistic回归(一)
			
首次接触最优化算法.介绍几个最优化算法,并利用它们训练出一个非线性函数用于分类. 假设现在有一些数据点,我们利用一条直线对这些点进行拟合(该直线为最佳拟合直线),这个拟合过程称作回归. 利用Logis ...
 - silverlight依赖属性
			
依赖属性(Dependency Property)和附加属性(Attached Property) 参考 http://www.cnblogs.com/KevinYang/archive/2010/0 ...
 - java通过JNI接口调用C语言-初级
			
JNI(java native interface):即java本地调用C的接口. 先看整体运行: 下面是过程: #vim test.java public class test{ public na ...
 - Servlet学习第一天--Servlet开发映射URL配置
			
基础不扎实,从头学,认真记录笔记. 感谢@孤傲苍狼:http://www.cnblogs.com/xdp-gacl/p/3760336.html -为什么要配置? 由于客户端是通过URL访问web服务 ...