#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
using namespace std; class mystring{
public:
mystring(const char *str=NULL);
mystring(const mystring &other);
~mystring(void);
mystring &operator=(const mystring &other);
mystring &operator+=(const mystring &other); char *getString();
private:
char *m_data;
}; //普通构造函数
mystring::mystring(const char *str){
if(str==NULL){
m_data=new char;
*m_data='\0';
}else{
int lenth=strlen(str);
m_data=new char[lenth+];
strcpy(m_data,str);
}
} mystring::~mystring(void){
delete[]m_data;//m_data是内部数据类型,也可以写成delete m_data
} //拷贝构造函数
mystring::mystring(const mystring &other){
//允许操作other的私有成员m_data???
int lenth=strlen(other.m_data);
m_data=new char [lenth+];
strcpy(m_data,other.m_data); } //赋值函数
mystring &mystring::operator=(const mystring &other){ //1.检测自赋值 处理 a=a的情况
if(this==&other){
return *this;
} //2释放原有的内存
delete []m_data; //3分配新的内存资源,并复制内容
int lenth=strlen(other.m_data);
m_data=new char[lenth+];
strcpy(m_data,other.m_data); //4返回本对象的引用
return *this;
} //赋值函数
mystring &mystring::operator+=(const mystring &other){ int left_lenth=strlen(m_data);
int right_lenth=strlen(other.m_data); //1分配新的内存资源,并复制内容
char *temp_data=new char[left_lenth+right_lenth+];
strcpy(temp_data,m_data);
strcat(temp_data,other.m_data);
delete []m_data;//2释放原有的内存 m_data=temp_data; //3返回本对象的引用
return *this;
} char * mystring::getString(){
return m_data;
} int main()
{
mystring a=mystring("");
mystring b=mystring(a);
mystring c=mystring("");
mystring d;
d=c; a+=d;
printf("%s\n",a.getString()); a+=a;
printf("%s\n",a.getString()); }

注意构造函数,拷贝构造函数,赋值函数,析构函数的写法

重载的写法

参考:高质量C++C 编程指南

string类的简要实现的更多相关文章

  1. String类的简要概述(1)

    String类时我们平时用的比较多的一个类,该类属于java中引用数据类型. String类里面有很多方法需要我们学习.如切割,追加,拼接等. String s = "abcdef" ...

  2. JAVA集合类简要笔记 - 内部类 包装类 Object类 String类 BigDecimal类 system类

    常用类 内部类 成员内部类.静态内部类.局部内部类.匿名内部类 概念:在一个类的内部再定义一个完整的类 特点: 编译之后可生成独立的字节码文件 内部类可直接访问外部类私有成员,而不破坏封装 可为外部类 ...

  3. 标准C++中的string类的用法总结

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  4. VC++ 标准C++中的string类的用法总结

    相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...

  5. [C++][语言语法]标准C++中的string类的用法总结

    转自:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 要想使用标准C++中string类,必须要包含 #include ...

  6. 标准C++中string类的用法

    转自博客园:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 相信使用过MFC编程的朋友对CString这个类的印象应该非 ...

  7. 标准C++中的string类的用法总结(转)

    http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的 ...

  8. C++中的string类(2)

    相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...

  9. 浅析String类

    这是对于String类的一些总结,我将会从几个方面并且结合着字符串池等相关知识进行总结 进程如下:                1.对于String类基本知识的一些总结 2.简要介绍字符串池 3.分 ...

随机推荐

  1. Harbor 企业级 Docker Registry

    HarBor项目:https://github.com/vmware/harbor 下载:https://github.com/vmware/harbor/releases 安装文档:https:// ...

  2. 20145204 《Java程序设计》第2周学习总结

    20145204 <Java程序设计>第2周学习总结 教材学习内容总结 在第三章主要学习了Java语言中的类型及其变量主要类型为:整数(1字节的byte,2字节的short,4字节的int ...

  3. hdu 4747 mex 线段树+思维

    http://acm.hdu.edu.cn/showproblem.php?pid=4747 题意: 我们定义mex(l,r)表示一个序列a[l]....a[r]中没有出现过得最小的非负整数, 然后我 ...

  4. 雷林鹏分享:Ruby CGI方法

    Ruby CGI方法 以下为CGI类的方法列表: 序号方法描述 1CGI::new([ level="query"]) 创建 CGI 对象.query可以是以下值: query: ...

  5. 雷林鹏分享:JSP 开发环境搭建

    JSP 开发环境搭建 JSP开发环境是您用来开发.测试和运行JSP程序的地方. 本节将会带您搭建JSP开发环境,具体包括以下几个步骤. 配置Java开发工具(JDK) 这一步涉及Java SDK的下载 ...

  6. Linux命令详解-echo

    echo会将输入的字符串送往标准输出.输出的字符串间以空白字符隔开,并在最后加上换行号. 1.命令格式: file [ -bchikLnNprsvz ] [ -f namefile ] [ -F se ...

  7. APP推广运营经验总结

    这片文章来自于我在公司的分享会,主题是关于APP在渠道方面的推广,主要包括3个方面,下载量,留存率,日活跃用户. 首先,在应用市场中,一个APP有四个方面,简介,截图,下载量,评论.用户看这四个方面, ...

  8. IOS-网络(发送JSON数据给服务器和多值参数)

    三步走: 1.使用POST请求 2.设置请求头 [request setValue:@"application/json" forHTTPHeaderField:@"Co ...

  9. 探究JS中对象的深拷贝和浅拷贝

    深拷贝和浅拷贝的区别 在讲深拷贝和浅拷贝的区别之前,回想一下我们平时拷贝一个对象时是怎么操作的?是不是像这样? var testObj1 = {a: 1, b:2}, testObj2=testObj ...

  10. vue2 过渡动画

    <body> <div id="app"> <transition name="move"> // transition里面 ...