String 构造,析构,复制,拷贝构造函数
2015-04-02 19:06
253 查看
class String{
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~ String(void); // 析构函数
String & operate =(const String &other); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
// 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];
*m_data = ‘0’;
} else {
int length = strlen(str);
m_data = new char[length+1];
strcpy(m_data, str);
}
}
// 拷贝构造函数
String::String(const String &other) {
int length = strlen(other.m_data);
m_data = new char[length+1];
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];
strcpy(m_data, other.m_data);
// (4)返回本对象的引用
return *this;
}
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~ String(void); // 析构函数
String & operate =(const String &other); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
// 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];
*m_data = ‘0’;
} else {
int length = strlen(str);
m_data = new char[length+1];
strcpy(m_data, str);
}
}
// 拷贝构造函数
String::String(const String &other) {
int length = strlen(other.m_data);
m_data = new char[length+1];
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];
strcpy(m_data, other.m_data);
// (4)返回本对象的引用
return *this;
}
相关文章推荐
- [面试] 写出 string 类的构造,析构,复制构造函数,复制操作符!
- [面试] 写出 string 类的构造,析构,复制构造函数,复制操作符!
- Vector::构造,复制构造,析构
- C++编程规范之构造、析构与复制
- 编写String类的构造、析构、赋值和拷贝构造函数
- 构造,析构,复制构造,重载=,和自动创建无名变量的问题(习题)
- List::构造、复制构造、析构
- C++构造,析构,友元类,对象,static成员,复制构造函数,运算符重载杂谈
- 关于构造,析构,拷贝构造函数,
- c++组合类的构造,复制构造,析构顺序
- String的构造,析构,赋值,赋值函数编写
- C++对象的构造、复制和析构
- 类的构造、析构、赋值构造、拷贝构造函数
- 类的构造、析构、赋值构造、拷贝构造函数
- C++构造与析构(2) - 拷贝构造函数
- C++编程规范之构造、析构与复制(读书笔记)
- C++构造与析构(14) - 编译器何时创建默认构造函数和拷贝构造函数
- 构造、复制、析构语意学
- 类String的普通构造、拷贝构造函数与赋值函数
- C++构造与析构(15) - 为何拷贝构造函数必须为const