C++QT day4

news2024/11/17 3:45:29

仿照string类,完成myString类

#include <iostream>
#include <cstring>
using namespace std;
class myString
{
    private:
        char *str;          //记录c风格的字符串
        int size;            //记录字符串的实际长度
    public:
        //无参构造
        myString():size(10)
        {
            str = new char[size];         //构造出一个长度为10的字符串
            strcpy(str,"");         //赋值为空串
        }
        //有参构造
        myString(const char *s)          //string  s("hello world")
        {
            size = strlen(s);
             str = new char[size+1];
             strcpy(str, s);
        }

        //拷贝构造
        myString(const myString &other):str(new char(*other.str)),size(other.size)
        {
            cout<<"拷贝构造函数"<<endl;
        }
        //析构函数
        ~myString()
        {
            delete str;//释放成员指针的空间
            cout<<"mySting::析构函数"<<endl;
        }
        //拷贝赋值函数
        myString &operator=(const myString &other)
        {
            if(this!=&other)
            {
                this->size=other.size;
                if(this->str!=NULL)
                {
                    delete this->str;
                }
                this->str=new char(*other.str);
            }
            cout<<"myString::拷贝赋值函数"<<endl;
        }
        //判空函数
        bool my_empty()
        {
            if(0==my_size())
            {
                return true;
            }
            return false;
        }
        //size函数
        int my_size()
        {
            if(*str!=0)
            {
                str++;
                size++;
            }
            return size;
        }
        //c_str函数
        char *c_str()
        {
            return this->str;
        }
        //at函数
        char &at(int pos)
        {
            if(pos >= 0 && pos< size)
            {
                return this->str[pos];
            }
            else
            {
                cout<<"数组越界"<<endl;
            }
        }
        //加号运算符重载
        const myString operator+ (const myString &R)const
           {
               myString c;
               c.str=strcat(this->str, R.str);
               return c;
           }
        //加等于运算符重载
        myString operator+=(const myString &other)
        {
            strcat(str,other.str);
            size+=other.size;
            return *this;
        }
        //关系运算符重载(>)
        bool operator> (const myString &R)const
        {
            if(strcmp(this->str,R.str) > 0)
            {
                return true;
            }
            else
                return false;
        }
        //中括号运算符重载
        char & operator[](int i)
        {
            if(i >= 0 && i< size)
            {
                return this->str[i];
            }
            else
            {
                cout<<"数组越界"<<endl;
            }
        }
};
int main()
{
    myString mystr("hello");
    myString mystr1("world");
    myString mystr2=mystr+mystr1;
    cout<<mystr.at(1)<<endl;
    cout<<mystr[1]<<endl;
    return 0;
}

思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1002170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【力扣每日一题】2023.9.11 课程表Ⅲ

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 今天是和前两天一样课程表&#xff0c;不过今天不太一样了&#xff0c;今天不是图论了&#xff0c;可以看作是全新的题目。 给我们一个课…

Java——选择语句

if语句 语法格式&#xff1a; if(表达式){若干语句 } 例&#xff1a; ​import java.util.Scanner; public class Test1 {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();if(n%20){System.out.println("even");}…

Linux命令200例:write用于向特定用户或特定终端发送信息

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…

v2.0舆情分析系统整体功能介绍

登录界面&#xff1a; 1、输入用户名、密码后可正常登录&#xff1b; 2、注册功能点击后进入注册界面正常注册用户信息&#xff1b; 3、忘记密码功能&#xff1a;点击后进入忘记密码页面demo 登录后&#xff0c;进入主页面&#xff0c;主页面目前包含关键词输入功能&#xf…

如何注册哥伦比亚商标?

在当今全球市场竞争激烈的环境下&#xff0c;商标已成为企业的重要资产之一。哥伦比亚作为一个拥有丰富历史文化的国家&#xff0c;对知识产权保护的重视程度也在逐渐提高。通过在哥伦比亚注册商标&#xff0c;企业可以更好地拓展南美市场&#xff0c;并进一步提升品牌价值和知…

Selenium自动化测试 —— 通过cookie绕过验证码的操作

验证码的处理 对于web应用&#xff0c;很多地方比如登录、发帖都需要输入验证码&#xff0c;类型也多种多样&#xff1b;登录/核心操作过程中&#xff0c;系统会产生随机的验证码图片&#xff0c;进行验证才能进行后续操作 解决验证码的方法如下&#xff1a; 1、开发做个万能…

T2I-Adapter:增强文本到图像生成的控制能力

链接&#xff1a;GitHub - TencentARC/T2I-Adapter: T2I-Adapter 文本到图像生成 (T2I) 是人工智能领域的一个重要研究方向。近年来&#xff0c;随着深度学习技术的发展&#xff0c;T2I 技术取得了显著进展&#xff0c;生成的图像在视觉效果上已经与真实图像难以区分。 然而&…

C++ -day3

1、自行封装一个栈的类 头文件 #ifndef ZY1_H #define ZY1_H#include <iostream>using namespace std;class Stack { private:int *p nullptr; //存储栈的数组int top; //栈顶元素的下标int max;public://定义析构函数~Stack();//定义拷贝构造函数…

零基础教程:使用yolov8训练无人机VisDrone数据集

1.准备数据集 1.先给出VisDrone2019数据集的下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1e2Q0NgNT-H-Acb2H0Cx8sg 提取码&#xff1a;31dl 2.将数据集VisDrone放在datasets目录下面 2.数据集转换程序 1.在根目录下面新建一个.py文件&#xff0c;取名叫…

全开源影视APP源码带后台 苍穹影视APP源码 免受权带安装教程

苍穹影视 V20 全新后台七彩视界免受权开源源码此版本为天穹公益版开源无解密安装教程 全新后台很是都雅,源码全开源无加密。 PC 端对接教程&#xff1a; 建议在浮图下操作 正常安装前后端 然后安装米酷 cms 根据教程安装即可 米酷 cms 对接部门已被我改动&#xff0c;只要在安装…

【C++进阶】二叉树进阶之二叉搜索树

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

测试面试回顾(1)

硬件测试面试回顾&#xff08;1&#xff09; pn结MOS和CMOS消耗功耗——MOS器件开关时半导体工艺半导体器件SPSS常用的10种统计分析如何用SPSS进行数据分析&#xff1f;Jmeter介绍及测试用例编写JmeterSelenium测试用例测试用例设计方法通用测试用例八要素自动化运维全局变量与…

matlab自带VMD详解,VMD去噪,VMD分解

为了更好的利用MATLAB自带的vmd函数&#xff0c;本期作者将详细讲解一下MATLAB自带的vmd函数如何使用&#xff0c;以及如何画漂亮的模态分解图。 首先给出官方vmd函数的调用格式。 [imf,residual,info] vmd(x) 函数的输入&#xff1a; 这里的x是待分解的信号&#xff0c;一行或…

Kubernetes Up and Running

从整体概念思想到具体组件对象的思想设计说明和实践探索&#xff0c;对分布式系统软件建设的认识更上一层楼。 英文版本下载 链接&#xff1a;https://pan.baidu.com/s/1ZjMqEMc3GGJxDc0ekz4ihA?pwdhjko 提取码&#xff1a;hjko 摘要 《Kubernetes Up and Running》是一本非…

前后端分离,JSON数据如何交互

如何接收&#xff1a; 在配置文件商法加上相应注解 EnableWebMvc 在接收的路径上加上RequestBody注解 注解的作用&#xff1a;在Spring框架中&#xff0c;RequestBody注解用于将HTTP请求的body中的内容转换为Java对象&#xff0c;并将其作为参数传递给控制器方法。它通常用…

【TCPDF】使用TCPDF导出PDF文件

目录 一、安装TCPDF类库 二、安装字体 三、使用TCPDF导出PDF文件 目的&#xff1a;PHP通过TCPDF类库导出文件为PDF。 开发语言及类库&#xff1a;ThinkPHP、TCPDF 效果图如下 一、安装TCPDF类库 在项目根目录使用composer安装TCPDF&#xff0c;安装完成后会在vendor目录下…

JAVAEE初阶相关内容第十一弹--多线程(进阶)

目录 一、常见的锁策略 1乐观锁VS悲观锁 1.1乐观锁 1.2悲观锁 2.轻量级锁VS重量级锁 2.1轻量级锁 2.2重量级锁 3.自旋锁VS挂起等待锁 3.1自旋锁 3.2挂起等待锁 4.互斥锁VS读写锁 4.1互斥锁 4.2读写锁 5.公平锁VS非公平锁 5.1公平锁 5.2非公平锁 6.可重入锁VS不…

记LGSVL Map Annotation(2)导入点云、以及地图

导入点云 内置的点云导入器工具提供了将最流行的点云文件格式&#xff08;PCD、PLY、LAS、LAZ&#xff09;转换为可用于仿真的数据所需的所有功能。 要访问点云导入器窗口&#xff0c;请在 Unity 编辑器中打开模拟器项目&#xff0c;然后导航到 Simulator/Import Point Cloud…

SpringCloud学习笔记(六)OpenFeign 服务接口调用

一、OpenFeign简介 1、OpenFeign是什么 Feign是一个声明式WebService客户端&#xff0c;使用Feign能让编写Web Service客户端更加简单。 它的使用方法是定义一个服务接口然后在上面添加注解&#xff0c;Feign也支持可拔插式的编码器和解码器&#xff0c;Spring Cloud对Feign进…