C++中的STRING数据 重载 = 和数组下标
来源:互联网 发布:淘宝上有卖大便的妈 编辑:程序博客网 时间:2024/06/04 01:16
Mstring_Test.c主文件
#include <iostream>#include "Mystring.h"using namespace std;int main(){ Mystring s1; Mystring s2("s2"); Mystring s2_2 = NULL; //相当于传递的参数是 NULL指针 Mystring s3 =s2; Mystring s4; s4 =s2; //复用=操作符的复用函数 函数 =操作符的参数 是一个对象 s4 ="s2222222"; // 调用复用等号操作符的 传递指针的函数 =操作符的参数是一个字符串首地址 cout << "hello world!" << endl; system("pause"); return 0;}
Mstring.cpp类cpp文件
#define _CRT_SECURE_NO_WARNINGS#include "Mystring.h"Mystring::Mystring(){ m_len = 0; m_p = new char[m_len +1]; //申请的是一个数组所以四方房的时候按照数组释放 strcpy(m_p,"") ;}Mystring::~Mystring(){ if(m_p != NULL) { delete [] m_p; //申请的时候是按照数组进行申请的 m_p = NULL; m_len = 0; }}Mystring::Mystring(const char *p){ if(m_p = NULL) //支持定义Mstring s2 = NULL;的定义 { m_len = 0; m_p = new char[m_len +1]; strcpy(m_p,"") ; } else { m_len = 0; m_p = new char[m_len +1]; strcpy(m_p,p) ; }}//拷贝构造函数Mystring::Mystring(const Mystring& s){ m_len =s.m_len; m_p = new char[m_len+1]; strcpy(m_p,s.m_p);}//操作符重载//实现 s2 = "s1243346";的操作Mystring& Mystring::operator=(const char *p){ //因为能够调用这些函数说明 s2已经存在了所以要释放 if (m_p != NULL) { delete [] m_p; m_len =0; } //根据p分配内存 if(p == NULL) { m_len = 0; m_p = new char[m_len+1]; strcpy(m_p,""); } else { m_len = strlen(p); m_p = new char[m_len+1]; strcpy(m_p,p); } return *this; //取出字符串但是将其返回的时候返回的是一个累的对象}//s1 = s2;Mystring& Mystring::operator=(const Mystring &s){ //因为能够调用这些函数说明 s2已经存在了所以要释放 if (this->m_p != NULL) { delete [] this->m_p; this->m_len =0; } this->m_len = s.m_len; this->m_p = new char[m_len+1]; strcpy(this->m_p,s.m_p); return *this; //取出字符串但是将其返回的时候返回的是一个累的对象}//在这里重载的目的就是为了取用字符中的数据char& Mystring::operator[](int index){ return this->m_p[index];}
Mstring.h文件
#pragma once#include <cstring>class Mystring{public: Mystring(); Mystring(const char *p); Mystring(const Mystring& s); ~Mystring(); //操作符重载 Mystring& operator=(const char *p); Mystring& operator=(const Mystring &s); //[] 重载 view char& operator[](int index); //[]其实就是为了返回 0 好元素的地址private: int m_len; char *m_p;};
阅读全文
0 0
- C++中的STRING数据 重载 = 和数组下标
- 【C++】重载二维数组下标 [ ][ ]
- 【C++】重载二维数组下标 [ ][ ]
- 数组下标重载
- 论C语言中的数组下标越界
- [C++]重载二维数组下标 [ ][ ]实现二维矩阵
- 求数组中的最大值和下标
- (c语言)指针和数组下标
- 重载多维数组下标 c++
- 重载多维数组下标 c++
- C++重载二维数组下标 [ ][ ]
- 基于string下标和replace函数替换string中的字符
- VBA中的数组下标
- C语言数组特性-取下标运算中的交换律----i[a] == a[i]
- 【C++】String类中的运算符重载
- 关于多维数组的下标重载
- 重载数组下标操作符,使用operator
- 重载数组下标操作符,使用operator
- 理解vfork函数
- 【bzoj 2618】凸多边形(半平面交)
- Spark streaming整合flume之Push方式
- 字符串指针相关习题
- lombok(消除冗长)安装及简单介绍
- C++中的STRING数据 重载 = 和数组下标
- JAVABEAN EJB POJO区别
- MySQL存储过程详解 mysql 存储过程
- 通达OA对接企业微信与钉钉 设置
- android 终端运行 vim / vi 命令执行失败 busybox解决之
- isBlank与isEmpty的区别
- Tomcat NioEndpoint的Poller和PollerEvent
- 排序
- 十三、kubernetes详细介绍