编写string类的构造、拷贝构造、析构、拷贝赋值函数
2018-03-14 12:06
218 查看
内容会持续更新,有错误的地方欢迎指正,谢谢!
#include<iostream> using namespace std; class String { public: String(const char *str=NULL); //构造函数 String(const String &other); //拷贝构造函数 ~String(void); //析构函数 String & operator=(const String &other); //拷贝赋值函数 private: char *m_String; //私有成员,保存字符串 }; String::String(const char *str) { cout<<"普通构造函数"<<endl; if(str==NULL) //如果str为空,存空字符串 { m_String=new char[1]; //分配一个字节 *m_String='\0'; //将之赋值为字符串结束符 } else { m_String=new char[strlen(str)+1]; //分配空间容纳str内容 strcpy(m_String,str); //赋值str到私有成员 } } String::String(const String &other) { cout<<"拷贝构造函数"<<endl; m_String=new char[strlen(other.m_String)+1]; strcpy(m_String,other.m_String); } String::~String(void) { cout<<"析构函数"<<endl; if(m_String!=NULL) //如果m_String 不为NULL,释放堆内存 { delete[] m_String; //释放后置为NULL m_String=NULL; } } String& String::operator =(const String &other) { cout<<"拷贝赋值函数"<<endl; if(this==&other) //首先判断当前对象与引用传递对象是否是同一个 { return *this; //直接返回本身 } delete [] m_String; m_String=new char[strlen(other.m_String)+1]; strcpy(m_String,other.m_String); return *this; } int main() { String a("hello"); //调用普通构造函数 String b("word"); //调用普通构造函数 String c(a); //调用拷贝构造函数 c=b; //调用拷贝赋值函数 return 0; }
相关文章推荐
- 类的构造、析构、拷贝、赋值函数
- String类简单实现(构造、拷贝构造、析构、赋值、输出、比较、字符串加、长度、子串)
- C++基础:四大基本函数,构造,析构,拷贝构造,赋值函数
- 简单的String类(构造、拷贝构造、赋值构造、析构等)
- 请用c++ 实现stl中的string类,实现构造,拷贝构造,析构,赋值,比较,字符串相加,获取长度及子串等功能。
- C++ 了解C++默默编写并调用哪些函数(构造 析构 拷贝构造 拷贝赋值)
- 请用c++ 实现stl中的string类,实现构造,拷贝构造,析构,赋值,比较,字符串相加,获取长度及子串等功能
- 实现一个string类,包括构造、析构、拷贝构造及operator= 函数
- 用汇编的眼光看C++(之class构造、析构) ,(之拷贝、赋值函数)
- String的构造,析构,赋值,赋值函数编写
- 编写String类的构造、析构、赋值和拷贝构造函数
- 构造、析构、拷贝语意学
- 类-构造、析构、拷贝、移动使用总结
- C++primer学习:拷贝控制(6):编写简化的string类
- 编写String类的构造函数、析构函数、拷贝构造函数、赋值函数
- C++中构造函数、拷贝构造、赋值函数
- 深度探索C++对象模型 第五章 构造、析构、拷贝语意学
- String类的构造与析构相关处理
- 禁止拷贝构造赋值函数
- 继承中构造、析构 与 拷贝构造、赋值中的调用区别