当前位置: 首页 > news >正文

C++(day4)

思维导图

封装Mystring

#include <iostream>
#include<cstring>using namespace std;class Mystring{
public://无参构造函数Mystring():size(10){str=new char[size];strcpy(str,"");cout<<"无参构造函数"<<endl;}//有参构造函数Mystring(const char *s){size=strlen(s);str=new char[size+1];strcpy(str,s);cout<<"有参构造函数"<<endl;}//拷贝构造函数Mystring(const Mystring &other){this->size=other.size;this->str=new char[this->size];strcpy(this->str,other.str);cout<<"拷贝构造函数"<<endl;}//析构函数~Mystring(){delete []str;cout<<"析构函数"<<endl;}//拷贝赋值函数Mystring &operator=(const Mystring &other){if(this!=&other){this->size=other.size;strcpy(this->str,other.str);}cout<<"拷贝赋值函数"<<endl;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<<str<<endl;}
private:char *str;  //字符串首地址int size;   //字符串大小
};int main()
{Mystring str1("hello");str1.show();Mystring str2("world");str2.show();Mystring str3;if(str3.empty()){cout<<"str3现在为空,字符串长度为"<<str3.strsize()<<endl;}str3=str1;str3.show();if(!str3.empty()){cout<<"str3现在不为空,字符串长度为"<<str3.strsize()<<endl;}Mystring str4=str2;str4.show();str4+=str3;str4.show();cout<<"str4字符串第7位是"<<str4.at(7)<<",str4字符串第13位是"<<str4[13]<<endl;cout<<str4.c_str()<<endl;if(str3>str2){cout<<"str3>str2"<<endl;}else{cout<<"str3<str2"<<endl;}return 0;
}

http://www.lryc.cn/news/167262.html

相关文章:

  • docker 部署 node.js(express) 服务
  • 商城系统开发,如何确保用户数据的安全性?
  • 黑客必备工具Kali Linux,安装与使用教程全包含,从入门到精通,全网最详细全面的Kali Linux教程
  • 2024滴滴校招面试真题汇总及其讲解(二)
  • 嵌入式-C语言中的if语句
  • 组合数 rust解法
  • 【SpringMVC】自定义注解与AOP结合使用
  • MyEclipse 用tomcat部署SSM项目后,项目名称和当前项目不一致
  • 来喽!!炒鸡详细的“数据在内存中的存储”真的来喽!
  • 【面试经典150 | 双指针】验证回文串
  • sql存储引擎
  • Visual Studio 2022安装SVN插件教程
  • 【PyCharm Community Edition】:串口开发
  • 亲测可用!!!Centos7安装chrome+chromedriver以便实现selenium自动化详细教程
  • spring cloud、gradle、父子项目、微服务框架搭建---cloud gateway(十)
  • AD22使用笔记+积累库
  • 20230912在ubuntu18.04下使用pigz来提高tar命令压缩解压缩的速度
  • python-xpath语法-爬取彼岸图4k高清动漫壁纸
  • 韩信点兵:求韩信一共有多少兵
  • 10个简单但超级有用的Python装饰器
  • DataGrip 2023 年下载、安装教程、亲测可用
  • 6.SpringEL与List,Map
  • 【Oracle】使用 SQL Developer 连接 Oracle 数据库
  • PostgreSQL 事务并发锁
  • CANoe-Model Editor无法修改ARXML文件的问题、E2E在SOME/IP通信中的使用问题
  • Conan安装第三方依赖库时SSL验证失败解决办法
  • 基于springboot+vue的大学生智能消费记账系统
  • Java——》synchronized的使用
  • vue+element使用阿里的图标库保存图标
  • Day 01 web前端基础知识