蛋疼芜鄙写的String类的c++复制控制,打基础啊打基础,打了一辈子的基础
2013-06-29 11:43
253 查看
这里只写了一点点,自己慢慢调试出来的,只包含了复制构造,赋值运算符和+ 的重载,希望蛋疼芜鄙的麻油看了之后抡锤子
/**************String.h*****************/
/************String.cpp**********************/
/**************String.h*****************/
#include<stdio.h> //#include<memory.h> class String { private: char *m_data; int m_len; int mystrlen(const char* str ); char* mystrcat(char*DeStr,char *srStr); public: String(const char* str=NULL); String(const String &onestr); String &operator=(const String &onestr); ~String(); int StrLen(); String &operator+(const String &onestr); };
/************String.cpp**********************/
#include"String.h" #include<malloc.h> int String:: mystrlen(const char * str) { int len = 0; while(*str) { len++; str++; } return len; } char* String::mystrcat(char* s1,char*s2) { int len = mystrlen(s1)+mystrlen(s2); char *str=(char*)malloc(len+1); for(int i=0;i<len;i++) { if(i<mystrlen(s1)) { str[i]=s1[i]; } if(i>=mystrlen(s1)) { str[i]=s2[i-mystrlen(s1)]; } } str[len]='\0'; printf("str address %d\n",str); return str; } int String::StrLen() { m_len = mystrlen(m_data); return m_len; } String::String(const char *str) { if(str == NULL) { return ; } int len = mystrlen(str); this->m_data = new char[len+1]; this->m_len = len; memcpy(this->m_data,str,len); } String::String(const String& str) { int len=mystrlen(str.m_data); this->m_data=new char[len+1]; this->m_len = len; memcpy(this->m_data,str.m_data,len); } String &String::operator=(const String& str) { if(this==&str) { delete [] m_data; return *this; } int len=mystrlen(str.m_data); this->m_data=new char[len+1]; this->m_len = len; memcpy(this->m_data,str.m_data,len); return *this; } String &String::operator+(const String& str1) { String *str = new String(); str->m_len = mystrlen(this->m_data)+mystrlen(str1.m_data); str->m_data = new char[str->m_len+1]; str->m_data = mystrcat(this->m_data,str1.m_data); printf("%s\n",str->m_data); return *str; } String::~String() { // printf("~~%s address: %d\n",this->m_data,this->m_data); delete []m_data; }
相关文章推荐
- C++语法基础--复制控制--复制构造函数 ,赋值操作符 ,析构函数
- c++基础知识--类的复制控制
- C++基础—复制控制,指针成员管理
- C++复制控制基础
- [C++] String类的复制控制的实现
- [C++] String类的复制控制的实现
- c++基础知识--类的复制控制(转)
- c++ premier -- 复制控制与重载操作符
- c++中的流程控制[c++ 基础(二)]
- 稍微深入点理解C++复制控制
- c++ 初学 构造函数和复制控制
- C++ 类的复制控制
- C++之复制控制
- C++ 复制控制
- 一个实例介绍C++复制控制(有一个C++11新特性要注意)——复制构造函数、赋值操作符、析构函数
- C++复制控制之赋值操作符(二)
- C++第十七天 复制控制
- C++基础---string类的data/c_str/copy
- <C/C++基础>设计一个String类(重载运算符等)
- c++ primer 学习笔记:复制控制之赋值操作符