用C++封装一个String
来源:互联网 发布:mindmapping 软件 编辑:程序博客网 时间:2024/06/07 20:24
习惯了C#跟Java以后,使用C++是各种不方便,主要是封装太少,其次C++中的对象思想其实用得并不广泛,而是强调指针,正在努力习惯中。
跟着课程封装了string
#include "mystring.h"#include<string.h>MyString * MyString::ms = NULL;MyString* MyString::MakeMyString(const char *s){ if(ms==NULL) { if(s==NULL) { ms = new MyString(); }else { ms = new MyString(s); } } return ms;}void MyString::set_string(const char *s){ if(this->s==NULL) { int str_len =strlen(s); this->s = new char[str_len+1]; strcpy(this->s,s); this->s[str_len] = 0; } else { int str_len = strlen(s); delete []this->s; this->s = new char[str_len+1]; strcpy(this->s,s); this->s[str_len] = 0; }}char * MyString::getString() const{ return s;}void MyString::releaseString(){ if(ms!=NULL) { delete ms; ms = NULL;//以供下次再次使用 // return ; }else { // return ; }}MyString::MyString() : s(NULL){}MyString::MyString(const char *s){ int len = strlen(s); this->s = new char[len+1]; strcpy(this->s,s); this->s[len] = 0;}MyString::~MyString(){ delete []s;}MyString::MyString(const MyString &it){ this->s = new char [strlen(it.s)+1]; strcpy(this->s,it.s); this->s = 0;}
mystring头文件
#ifndef MYSTRING_H#define MYSTRING_Hclass MyString{private: static MyString *ms; char *s;public: static MyString* MakeMyString(const char *s); void set_string(const char *s); char* getString()const; void releaseString();protected: MyString(); MyString(const char *s); ~MyString(); MyString(const MyString &it);};#endif // MYSTRING_H
总结起来,这个跟java的私有化结构函数思想一样,但是这个主要是操作指针、数组。学到的东西:new 出来的东西一定要delete,如果下次需要重新使用需要将其置为NULL;
深拷贝的使用方法与情况(有指针存在的时候)。
0 0
- 用C++封装一个String
- 自己动手封装一个string类
- C++string的一个示例
- 用c语言实现 编写一个函数reverse_string(char * string)
- 用C编写一个自己的string库文件_01
- 纯c封装的一个队列
- C语言中用struct封装一个数组
- 用C++封装一个mysqlAPI
- C++string类的一个实现
- [C#] 自己封装的一个数据库访问类 让ado.net 用起来和ado一样
- [C#] 自己封装的一个数据库访问类 让ado.net 用起来和ado一样
- [C#] 自己封装的一个数据库访问类 让ado.net 用起来和ado一样
- [C#] 自己封装的一个数据库访问类 让ado.net 用起来和ado一样
- 用Swig封装C/C++
- 用Swig封装C/C++
- 【C#】用C#实现封装
- 关于一个简单shellcode封装成C语言的形式
- C++——一个封装好的环形缓冲区
- 简单的android蓝牙通信技术(一)
- FZU 2150Fire Game (BFS_好题)
- Thread.Sleep函数
- 【01背包】HDU1171Big Event in HDU
- 打印字典和数组中的中文字符
- 用C++封装一个String
- android如何用imageloader获取bitmap图片
- PHP函数
- c# mysql
- SVM初学
- 获取Android手机CPU/ABI型号
- C++ 标准库 —— random
- Java集合(五):Set集
- python使用glob和mutagen批量处理音频文件的ID3信息