第八章作业
2015-06-03 21:45
337 查看
#include "CMyString.h"//CMyString.cpp using namespace std; CMyString CMyString::operator+(CMyString &obj) { cout<<"重载运算符+"<<endl; char *p=new char[m_length]; for(int k=0;k<m_length;k++) p[k]=m_p[k]; delete []m_p; m_p=new char[m_length+obj.m_length]; for(int i=0;i<m_length;i++) { m_p[i]=p[i]; //cout<<m_p[i]<<endl; } delete []p; for(int j=m_length;j<m_length+obj.m_length;j++) { m_p[j]=obj.m_p[j-m_length];//注意j要减去length //cout<<m_p[j]<<endl; } m_length=m_length+obj.m_length; //cout<<"m_length="<<m_length; return *this; } void CMyString::operator =(CMyString &obj) { cout<<"重载运算符="<<endl; delete []m_p; m_length=obj.m_length; m_p=new char[m_length]; for(int i=0;i<m_length;i++) m_p[i]=obj.m_p[i]; }
#ifndef _CMYSTRING_H_//CMyString.h #define _CMYSTRING_H_ #include <iostream> using namespace std; class CMyString { public: CMyString(int length,char *p) { cout<<"构造string!"<<endl; m_length=length; m_p=new char[length]; for(int i=0;i<length;i++) { m_p[i]=p[i]; } //m_p[i]='\0'; } CMyString(CMyString &obj)//拷贝构造函数没有返回值eg。CPoint(CPoint &obj) { cout<<"拷贝构造函数!String"<<endl; m_length=obj.m_length; //delete []m_p; m_p=new char[m_length]; for(int i=0;i<obj.m_length;i++) m_p[i]=obj.m_p[i]; } void ShowCMyString()const { for(int i=0;i<m_length;i++) cout<<m_p[i]; cout<<endl; } ~CMyString() { delete []m_p; cout<<"析构string!"<<endl; } int GetLength() { return m_length; } char* GetP() { return m_p; } CMyString operator+(CMyString &obj); void operator =(CMyString &obj); private: int m_length; char *m_p; }; #endif
#include "CMyString.h"//smain.cpp #include <string> using namespace std; char GetChar() { char ch; while((ch=cin.get())=='\n') {;} //cout<<"ch="<<ch<<"!!"<<endl; return ch; } void main() { char *p; cout<<"input the length:"; int length; cin>>length; // cin.get(); cout<<"input the string:"; //string b; //cin>>b; p=new char[length]; for(int i=0;i<length;i++) { p[i]=GetChar(); } CMyString a(length,p); a.ShowCMyString(); CMyString b(a); b.ShowCMyString(); CMyString c(b); c=a+b; c.ShowCMyString(); delete []p; //cout<<length; }
相关文章推荐
- 分布式系统架构的基本原则和实践
- Spring2.5学习3.4_让Spring自动扫描和管理Bean
- ubuntu鼠标和触摸板的禁用
- Excel Sheet Column Number
- HBase简介
- Nginx安装详解
- 面试题5: 在Java中如何跳出当前的多重嵌套循环?
- VS2010+Opencv-2.4.10的配置攻略(亲测)
- Unhandled event loop exception No more handles
- Spring2.5学习3.2_编码剖析@Resource注解的实现原理
- 海马汽车经销商管理系统技术解析(十六)入库修改
- PHPiconv函数
- Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
- HDU 5245
- corosync +drbd实现HA MariaDB
- DirectoryInfo类
- 直接使用Jlink仿真器下载程序至Freescale K60系列 MCU
- 第十四周阅读项目(2)
- 数据结构 c++ 广义表
- RM报表,点击保存,为何每次都显示 另存为的对话框?