[面试] 写出 string 类的构造,析构,复制构造函数,复制操作符!
2013-03-10 20:59
429 查看
#include <iostream> // 。。。 #define BUG puts("here!!!"); using namespace std; class String { private : char *m_data; public : String(const char *str = NULL); // 构造函数 String(const String &other); // 拷贝构造函数 ~String(); String& operator= (const String &other); // 赋值函数 }; String::String(const char* str) { if(str == NULL) { m_data = new char[1]; m_data[0] = '\0'; } else { int len = static_cast<int> (strlen(str)); m_data = new char[len + 1]; strcpy(m_data, str); } } String::String(const String &other) { if(other.m_data == NULL) { m_data = new char[1]; *m_data = '\0'; } else { int len = strlen(m_data); m_data = new char[len+1]; strcpy(m_data, other.m_data); } } String& String::operator= (const String& other) { if(this == &other) return *this; delete []m_data; if(other.m_data == NULL) { m_data = new char[1]; m_data[0] = '\0'; } else { int len = strlen(other.m_data); m_data = new char[len+1]; strcpy(m_data, other.m_data); } return *this; } String::~String() { delete []m_data; } int main() { String sa, sb; sa = "abcde"; String sc(sa); return 0; }
相关文章推荐
- [面试] 写出 string 类的构造,析构,复制构造函数,复制操作符!
- String 构造,析构,复制,拷贝构造函数
- C++我们必须要了解的事之具体做法(1)——构造、复制构造、析构、赋值操作符背后的故事
- Copy Control 复制控制 (复制构造函数 copy constructor,析构函数 destructor, 赋值操作符 operator=
- 让我们一步一步实现一个完整的 String 类:构造、拷贝、赋值、移动和析构
- C++编程规范之构造、析构与复制(读书笔记)
- C++构造,析构,友元类,对象,static成员,复制构造函数,运算符重载杂谈
- 重温C++ primer 之复制控制(复制构造函数,赋值操作符,析构函数)
- 一个实例介绍C++复制控制(有一个C++11新特性要注意)——复制构造函数、赋值操作符、析构函数
- 复数类的相关运算(判断大小及四则运算)->(构造,析构,拷贝复制,运算符重载)
- 编写类String的构造/析构函数,赋值操作符
- My_String类案例(构造、析构、重载'=' '[]' '<<' '==' '!=' '>' '<' '>>' 运算、操作符以及其他技巧)(重载完结)
- String的构造,析构,赋值,赋值函数编写
- Vector::构造,复制构造,析构
- 构造,析构,复制构造,重载=,和自动创建无名变量的问题(习题)
- 笔试面试那件小事(类的构造、析构、赋值函数)
- 复制构造函数,赋值操作符,深浅复制,数组转换成vector数据
- string的四个函数--构造、析构、拷贝、赋值
- List::构造、复制构造、析构
- C++编程规范 构造、析构与复制