
- #include
- #include
-
- using namespace std;
-
- class Mystring{
- public:
- //无参构造函数
- Mystring():size(10){
- str=new char[size];
- strcpy(str,"");
- cout<<"无参构造函数"<
- }
- //有参构造函数
- Mystring(const char *s){
- size=strlen(s);
- str=new char[size+1];
- strcpy(str,s);
- cout<<"有参构造函数"<
- }
- //拷贝构造函数
- Mystring(const Mystring &other){
- this->size=other.size;
- this->str=new char[this->size];
- strcpy(this->str,other.str);
- cout<<"拷贝构造函数"<
- }
- //析构函数
- ~Mystring(){
- delete []str;
- cout<<"析构函数"<
- }
- //拷贝赋值函数
- Mystring &operator=(const Mystring &other){
- if(this!=&other){
- this->size=other.size;
- strcpy(this->str,other.str);
- }
- cout<<"拷贝赋值函数"<
- return *this;
- }
- //判空函数
- bool empty()const{
- return !strlen(this->str);
- }
- //size函数
- int strsize()const{
- return strlen(this->str);
- }
- //c_str函数
- char *c_str(){
- return this->str;
- }
- //at函数
- char &at(int pos){
- return *(this->str+pos-1);
- }
- //加号运算符重载
- Mystring operator+(const Mystring &R)const{
- Mystring temp;
- strcat(temp.str,this->str);
- strcat(temp.str,R.str);
- return temp;
- }
- //加等于运算符重载
- Mystring &operator+=(const Mystring &R){
- strcat(this->str,R.str);
- return *this;
- }
- //关系运算符重载(>)
- bool operator>(const Mystring &R)const{
- if(strcmp(this->str,R.str)>0){
- return true;
- }
- else{
- return false;
- }
- }
- //中括号运算符重载
- char &operator[](int pos)const{
- return *(this->str+pos-1);
- }
- //展示函数
- void show(){
- cout<
- }
- private:
- char *str; //字符串首地址
- int size; //字符串大小
- };
-
- int main()
- {
- Mystring str1("hello");
- str1.show();
- Mystring str2("world");
- str2.show();
- Mystring str3;
- if(str3.empty()){
- cout<<"str3现在为空,字符串长度为"<
strsize()< - }
- str3=str1;
- str3.show();
- if(!str3.empty()){
- cout<<"str3现在不为空,字符串长度为"<
strsize()< -
- }
- Mystring str4=str2;
- str4.show();
- str4+=str3;
- str4.show();
- cout<<"str4字符串第7位是"<
at(7)<<",str4字符串第13位是"<13]< - cout<
c_str()< - if(str3>str2){
- cout<<"str3>str2"<
- }
- else{
- cout<<"str3
< - }
-
- return 0;
- }
-
相关阅读:
迷茫中翻滚
工厂模式——工厂方法模式+注册表
Qt调节Win屏幕亮度和声音大小
Android Material Design控件使用(二)
海明检验码和循环冗余校验码
Linux系统下挂载windows share共享文件夹
P06 DDL
算法:(四)链表
FilterRegistrationBean能不能排除指定url
vue属性data的处理规则
-
原文地址:https://blog.csdn.net/qq_53268516/article/details/132816519