string类的实现(构造函数,析构函数,运算符重载)
String类的代码:
class String
{
public:String(char* str=""){_str = new char[strlen(str) + 1];strcpy(_str, str);}String(const String& str){_str = new char[strlen(str._str) + 1];strcpy(_str, str._str);}~String(){delete[] _str;}String& operator=(const String& str){if (&str == this)return *this;delete[] _str;_str = new char[strlen(str._str) + 1];strcpy(_str, str._str);return *this;}bool operator==(const String& str){return strcmp(_str, str._str) == 0;}friend ostream& operator<<(ostream& o,String& str){o << str._str;return o;}
private:char* _str;
};
包括构造函数,拷贝构造函数,析构函数,算数运算符重载。
下面是测试代码:
String s1 = "hello";String s2 = "world";String s3 = "o";cout << "s1=" << s1 << endl;cout << "s2=" << s2 << endl;cout << "s3=" << s3 << endl;cout << endl;String s4(s1);String s5(s1);String s6(s1);s5 = s2;cout << "s4=" << s4 << endl;cout << "s5=" << s5 << endl;cout << (s4 == s5) << endl;cout << (s4 == s6) << endl;
测试结果:
转载于:https://blog.51cto.com/lzd1995/1762256
string类的实现(构造函数,析构函数,运算符重载)相关推荐
- c++单链表【构造函数、运算符重载、析构函数、增删查改等】
c++中的单向链表写法:实现增删查改.构造函数.运算符重载.析构函数等. 建立头文件SList.h #pragma oncetypedef int DataType; //SList要访问SListN ...
- c++复习(2)拷贝构造函数与运算符重载
目录 前言 拷贝构造函数 函数定义 调用 缺省(默认)的拷贝构造函数 -- 浅拷贝 涉及指针或者内存操作 用char * 用char[] 用string 自己写的拷贝构造函数 类中数据含有指针 类中含 ...
- C++ 类和对象(二):构造函数、析构函数、拷贝构造函数、运算符重载
构造函数 析构函数 拷贝构造函数 运算符重载 class Date {}; 可以看到,上面那个类没有任何成员,是一个空类,但是它真的什么都没有吗?其实一个类在我们不写的情况下,都会生成6个默认的成员函 ...
- C++入门:构造函数,析构函数,拷贝构造函数,运算符重载详解
目录 类的6个默认成员函数 一.构造函数 1.概念 2.特征如下: (1) 函数名与类名相同. (2)无返回值. (3)对象实例化时编译器自动调用对应的构造函数. (4)构造函数可以重载. (5)如果 ...
- 【跟学C++】C++类与对象—构造函数—析构函数(Study10)
文章目录 1.面向对象(类与对象) 1.1 类 1.2 对象 1.3 访问之句点运算符(.) 1.4 访问之指针运算符(->) 2.public(公有)和private(私有) 3.构造函数 3 ...
- C++11之右值引用(三):使用C++11编写string类以及“异常安全”的=运算符
前面两节,说明了右值引用和它的作用.下面通过一个string类的编写,来说明右值引用的使用. 相对于C++98,主要是多了移动构造函数和移动赋值运算符. 先给出一个简要的声明: class Strin ...
- 日期类计算器的实现以及运算符重载
前言 众所周知,运算符重载是C++类与对象中非常重要的一环.今天我们介绍内容就是通过模拟实现日期类的计算机,来详细的了解运算符是如何重载的. 注:代码给在文末. 目录 前言 创建一个日期类 1.重载 ...
- C++派生类含有成员对象构造函数析构函数顺序
参考博客:传送门1 当类中含有对象成员时: 类的构造函数要包含对成员对象的初始化,如果构造函数的成员初始化列表没有包含对成员对象的初始化,系统会自动调用成员对象的无参构造函数.顺序上:先调用成员对象的 ...
- 转换构造函数与类型构造函数与运算符重载函数
#include <iostream> using namespace std; class complex { public:complex(){real=0;image=0;}comp ...
- C++实现CMatrix类的构造、实现及运算符重载
C++实现CMatrix类的构造.实现及运算符重载 前言 一.CMatrix类的实现代码 CMatrix.cpp CMatrix.h main.cpp 二.运行截图 三.总结 构造函数 析构函数 运算 ...
最新文章
- Android——apk反编译
- Java 8 Stream中间操作(方法)示例
- 题解P3745期末考试
- Gink掉过的坑(一):将CCTableView导入到lua中
- 赛尔号通信数据的逆向分析与还原(思路篇)
- 优秀html5网页设计,五个国外优秀的HTML5酷站欣赏|H5开发第二课
- UE4中HUD、UMG、Slate之间的区别
- [转帖]一个老程序员的心理话(三)
- Swingbench 博客合集
- 教资报名网站显示无法访问此页面
- matlab小端模式合并,大端方式和小端模式【YC】
- ESP-IDF:ESP32 fatory分区不够用,重新分区的方法
- Python每日一练(5)-百词斩
- signature=cb30417dfa65eef445418827e0f0e0e6,以太坊P2P网络节点初始化
- java汉字转拼音区别多音字_java中文转拼音,支持多音字词组,不支持音标
- 2019张小龙微信公开课精华整理(未完待续....)
- Hive 错误 Expression not in GROUP BY key
- 【学习笔记】Docker(一)
- 关于远程桌面链接下调用显卡加速科学运算
- android studio升级的步骤,win7系统更新Android Studio的操作方法
热门文章
- 纪录片.BBC.数据之趣.The.Joy.of.Data.2016
- Express + Element-ui 实现图片/文件上传
- 使用SALT-API进入集成开发的简单样例
- Windows Server 2003 导入Java生成的证书,保证iis对CAS的访问
- GMapbook中文版上线
- vue2使用axios post跳坑,封装成模块
- 算法练习5---快速排序Java版
- Java 并发---ConcurrentHashMap
- uva1331三角剖分
- 学习进度(2016.3.13)