String类深拷贝的现代写法和传统写法
来源:互联网 发布:linux服务器端口开放 编辑:程序博客网 时间:2024/06/06 01:10
1.传统写法:老老实实开辟空间并复制内容
2.现代写法:借助中间变量,交换指针
#include<iostream>using namespace std;//String类传统写法namespace tradition{class String{public://构造String(char* str = ""):_str(new char[strlen(str)+1]){strcpy(_str, str);}//拷贝构造String(const String& s){_str = new char[strlen(s._str)+1];strcpy(_str, s._str);}//析构~String(){if(_str)delete[] _str;}//赋值运算符重载String& operator=(const String& s){if(this != &s)//防止自己给自己赋值{delete[] _str;//释放原空间_str = new char[strlen(s._str)+1];//开新空间strcpy(_str, s._str);//赋值}return *this;}char* GetStr(){return _str;}private:char* _str;};}//String类现代写法namespace modern{class String{public://构造,析构,打印,都和传统写法一样String(char* str = ""):_str(new char[strlen(str)+1]){strcpy(_str, str);}~String(){delete[] _str;}char* GetStr(){return _str;}//拷贝构造,赋值运算符重载另外写,借助中间变量,不用直接开辟空间String(const String& s):_str(NULL){String tmp(s._str);//构造函数swap(_str, tmp._str);}String& operator=(const String& s){if(this != &s){String tmp(s._str);swap(_str, tmp._str);}return *this;}private:char* _str;};}
阅读全文
0 0
- String类深拷贝的现代写法和传统写法
- C++ String的传统和现代写法的深拷贝
- string深拷贝的传统与现代写法
- 【C语言】【面试题】C++中String类浅拷贝,深拷贝的传统写法与现代写法
- string传统/现代写法
- string的传统与现代写法
- 模拟实现string(深浅拷贝,传统现代写法)
- 深拷贝的现代写法
- 【String类】C++:String类的传统写法与现代写法
- 深拷贝的传统写法
- String类的增删查改(深拷贝,现代写法)
- 单链表类成员函数现代写法、传统写法
- string类之深拷贝的两种写法
- String类深拷贝写法的增删查改
- 模拟实现String类--->现代写法
- 【C语言】【面试题】C++中String类引用计数器的浅拷贝写法与深拷贝写法
- 模拟实现String类----传统写法
- 拷贝构造函数和赋值操作的写法
- 机器学习:线性回归和逻辑回归的区别
- DevExpress之WaitDialogForm
- 中文版iTween帮助文档、参数解析
- 获取百度地图
- centos 下 sphinx(coreseek)安装及常见问题
- String类深拷贝的现代写法和传统写法
- 剑指offer 17---合并两个排序的链表
- 【剑指Offer】面试题31:连续子数组的最大和
- jedis与spring整合及简单的使用RedisTemplate操作
- vue学习指南1
- JEESZ分布式系统环境安装
- java设计模式-装饰者模式
- Java播放音乐
- 在root用户执行hive命令报错