String类的实现
2015-12-04 13:52
295 查看
已知String类定义如下:
class String
{
public:
String(const char *str = NULL); // 通用构造函数
String(const String &another); // 拷贝构造函数
~ String(); // 析构函数
String & operater =(const String &rhs); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
尝试写出类的成员函数实现。
答案:
class String
{
public:
String(const char *str = NULL); // 通用构造函数
String(const String &another); // 拷贝构造函数
~ String(); // 析构函数
String & operater =(const String &rhs); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
尝试写出类的成员函数实现。
答案:
String::String(const char *str) { if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断 { m_data = new char[1] ; m_data[0] = '\0' ; } else { m_data = new char[strlen(str) + 1]; strcpy(m_data,str); } }
String::String(const String &another) { m_data = new char[strlen(another.m_data) + 1]; strcpy(m_data,other.m_data); } String& String::operator =(const String &rhs) { if ( this == &rhs) return *this ; delete []m_data; //删除原来的数据,新开一块内存 m_data = new char[strlen(rhs.m_data) + 1]; strcpy(m_data,rhs.m_data); return *this ; } String::~String() { delete []m_data ; }
相关文章推荐
- 一段自旋锁和中断不能睡眠的解释
- Eclipse中使用lombok
- php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
- c#练习题
- 解决Value '0000-00-00 ' can not be represented as java.sql.Timest
- 【设计模式】简单工厂模式——以一个简单的计算器为例
- Android Service生命周期 Service里面的onStartCommand()方法详解
- android典型代码系列(三)------数据库URI收集
- Android中常用的位图操作(View与Bitmap转化、圆角、灰化、提取Alpha、旋转、倒影、剪切……)
- 关于开发中 hosts 文件的修改
- CF div2 334 C
- 阿里云的esc
- 丢失的数字
- 1.iOS开发系列--C语言之基础知识
- 深入理解C First
- 欧拉函数求法与欧拉筛法求素数
- Unity中的自定义鼠标
- 查看gcc预定义的宏
- 交互还有事件触发。
- scala 元组tuple的几个知识点-提供分