day 0912

news2024/12/25 22:06:49
#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)
    {
        size = strlen(s);
        str =new char[size+1];
        strcpy(str,s);
    }
    //拷贝构造
    myString(const myString &other)
    {
        size = strlen(other.str);
        str =new char[size+1];
        strcpy(str,other.str);
    }
    //析构函数
    ~myString ()
    {
        delete str;
        str = nullptr;
    }
    //拷贝赋值函数
    myString & operator=(const myString &other)
    {
        if(this != &other)
        {
            if(this->str != NULL)
            {
                delete str;
            }
            this->str = new char[strlen(other.str)+1];
            strcpy(str,other.str);
        }
        return *this;
    }
    //判空函数
    bool str_empty()
    {
        return str == nullptr;
    }
    //size函数
    int str_size()
    {
        return size;
    }
    //c_str函数
       char *c_str()
       {
           char *c_string = new char[size +1];
           strcpy(c_string, str);
           return c_string;
       }
    //at函数
    char &at(int pos)
    {
        if(pos<0||pos>size-1)
            return*str;
            return *(str+pos);
    }
    //加号运算符重载
    const myString operator+(const myString &s)
    {
        myString  tmp;
        tmp.size = size + s.size;
        tmp.str = new char[tmp.size+1];
        strcpy(tmp.str,str);
        char *dstr = tmp.str + size;
        strcpy(dstr, s.str);
        dstr = nullptr;
        return tmp;
    }
    //加等于运算符重载
    const myString operator+=(const myString &s)
    {
        myString tmp(*this);
        size = tmp.size + s.size;
        delete str;
        str = new char[size+1];
        strcpy(str,tmp.str);
        char *dstr = str + tmp.size;
        strcpy(dstr, s.str);
        dstr = nullptr;
        return *this;
    }
    //关系运算符重载(>)
    bool operator >(const myString &s)
    {
        int i=0;
        for(;(*(str+i)==*(s.str+i) && *(str+i)!=0 && *(s.str+i)!=0);i++);
        return *(str+i)-*(s.str+i)>0;
    }
    //中括号运算符重载
    char &operator[](int pos)
    {
        if(pos<0||pos>size-1)
            return *str;
        return *(str+pos);
    }
    //定义成员函数
    void show()
    {
        cout<<str<<endl;
    }
};

int main()
{
   myString s1("hello ");
   myString s2("world");
   myString s3;
   s3 = s1+s2;
   s3.show();

   myString s4;
   s4 = s3;
   s4.show();

   s1+=s2;
   s1.show();

   s1[0]='H';
   s1.show();

   s1.at(6)='W';
   s1.show();
   return 0;
}

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

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

相关文章

【数据结构】队列知识点总结--定义;基本操作;队列的顺序实现;链式存储;双端队列;循环队列

欢迎各位看官^_^ 目录 1.队列的定义 2.队列的基本操作 2.1初始化队列 2.2判断队列是否为空 2.3判断队列是否已满 2.4入队 2.5出队 2.6完整代码 3.队列的顺序实现 4.队列的链式存储 5.双端队列 6.循环队列 1.队列的定义 队列&#xff08;Queue&#xff09;是一种先…

最新版WPS 2023 加载Zotero方法

安装wps2019vba.exe&#xff0c;获取链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1eeoc6Tmwyzxh3n1MFQTVeA 提取码&#xff1a;6431 –来自百度网盘超级会员V8的分享 打开WPS的工具的加载项 添加文件路径&#xff0c;我的在&#xff1a; C:\Users\Administrat…

函数,变量作用域

目录 为什么需要函数 ​编辑 什么叫函数​编辑 如何定义函数 ​编辑 return和break 函数分类 函数声明 函数是C语言基本单位 变量作用域 全局变量局部变量 命名一样 为什么需要函数 什么叫函数 如何定义函数 return和break 函数分类 函数声明 函数是C语言基本单位…

腾讯云4核8G云服务器S5租用价格_CPU型号_网络性能

腾讯云4核8G服务器CVM标准型S5实例性能测评&#xff0c;包括CPU型号、内存、系统盘、CVM实例规格性能测评&#xff0c;腾讯云4核8G租用优惠价格表&#xff0c;腾讯云服务器网分享腾讯云4核8G服务器CVM S5性能测评和租用费用&#xff1a; 目录 腾讯云4核8G服务器CVM S5性能测评…

嵌入式操作Sqlite的8条建议

当使用 SQLite C 语言接口进行数据库操作时&#xff0c;以下是一些建议和最佳实践&#xff1a; 错误处理&#xff1a;SQLite C 语言接口的函数通常返回一个整数作为返回码&#xff08;return code&#xff09;。在调用这些函数后&#xff0c;应该检查返回码以确定操作是否成功。…

pytorch中的词性标注_seq2seq_比较naive的示例

一、各种用法_查漏补缺&#xff1a; 1.关于numpy中的argmax的用法&#xff1a; numpy之argmax()函数 - 知乎 (zhihu.com) 具体看这篇文章够了 二、代码注释&#xff1a; 参考&#xff1a; Sequence Models and Long Short-Term Memory Networks — PyTorch Tutorials 2.0.…

Ae 效果:CC Rainfall

模拟/CC Rainfall Simulation/CC Rainfall CC Rainfall&#xff08;CC 下雨&#xff09;可用来模拟带景深、光效和运动模糊的下雨效果。 ◆ ◆ ◆ 效果属性说明 Drops 雨滴 用于控制雨滴的数量。 默认值为 5000。值越大&#xff0c;雨线越密集。 Size 大小 用于控制雨滴的大小…

【LeetCode-简单题】977. 有序数组的平方

文章目录 题目方法一&#xff1a;双指针方法二&#xff1a; 题目 方法一&#xff1a;双指针 class Solution { // 方法一 &#xff1a;双指针public int[] sortedSquares(int[] nums) {int left 0;int right nums.length -1 ;int[] res new int[nums.length];//结果集新数组…

jwt自定义表签发、jwt 多方式登录(auth的user表)

补充 # 1 接口文档编写规范&#xff1a;-1 描述-2 请求地址-3 请求方式-4 请求参数-headers-请求体-请求参数-5 请求编码格式-6 返回格式-示例-返回数据字段含义-其他&#xff1a;-错误状态码-...-接口文档编写位置-写在文件中&#xff1a;word&#xff0c;md&#xff0c;跟前…

MySQL从入门到精通【实践篇】之使用Sharding-JDBC 分库分表详解

文章目录 0. 前言本文技术组件版本基本介绍 2. 使用和配置&#xff1a;步骤1 引入依赖步骤2 配置数据源和分片策略步骤3 核心代码MybatisPlusConfig 核心配置OrderServiceOrderServiceImplOrderInfoOrderMapperOrderControllerBaseMapper 3. 数据库分片配置在我的demo工程中大家…

【2023】基于docker 实现部署jar包项目(包括单个和多个一起部署)

建议学习本博客之前&#xff0c;需要对docke的基本命令有过学习&#xff1b; 目录 前言1、项目打包2、编写Dockerfile文件2.1、单个jar部署&#x1f355;Dockerfile文件常用命令 2.2.1、编写一个Dockerfile 文件格式制作镜像 2.1.2、执行docker命令2.2、多个jar一起部署到docke…

电脑提示“Windows Boot Manager boot failed”怎么办?

如果主引导记录(MBR)损坏&#xff0c;则会出现此错误消息“Windows Boot Manager boot failed”。因此&#xff0c;Windows 10引导管理器未能找到操作系统加载程序可能是由于MBR损坏。损坏MBR的原因可能是恶意软件感染或关闭电脑时使用方法不当。那么&#xff0c;Windows提示“…

【iOS】push与present Controller的区别

文章目录 前言一、push方法二、pop方法三、present方法四、dismiss方法五、dismiss多级的方法举例动画 前言 iOS推出与退出界面有两种方式——push与present&#xff0c;接下来笔者分别介绍这两种方式 一、push方法 SecondViewController *second [[SecondViewController all…

运行ORB-SLAM3,整体感觉还不错

安装文档&#xff0c;可以参考 https://blog.csdn.net/u014374826/article/details/132013820 运行测试 双目IMU 可以参考官方文档 Running ROS example: Download a rosbag (e.g. V1_02_medium.bag) from the EuRoC dataset (http://projects.asl.ethz.ch/datasets/doku.ph…

Docker笔记-概念安装简单使用

概念 docker通用词汇。 镜像&#xff1a;Build&#xff0c;创建一个镜像。 仓库&#xff1a;Ship&#xff0c;从仓库和主机上运输镜像。 容器&#xff1a;Run&#xff0c;运行的镜像就是一个容器。 安装 Windows上安装 Docker对win10有原生的支持&#xff0c;win10下的是…

zemax优化功能

1、三种优化方法 zemax的三种优化方法中&#xff0c;局部优化会找到局部的极小值点&#xff0c;全局优化会找到整体的最小值点。 锤形优化适用于先用全局优化找到大概值后&#xff0c;进一步完善光学系统 对于评价函数单调或者局部最小值就是全局最小值的情况&#xff0c;使…

1976~2020年青藏高原典型冰川及冰湖遥感监测数据集

冰川面积是反应气候变化最直接的指标之一。在全球变暖的大背景下&#xff0c;对于评估冰川融化造成的生态、全球气候变化和水资源价值评价等问题十分重要。本文针对受西风和印度洋夏季风影响下的青藏高原冰川及其末端冰湖的变化特征&#xff0c;制作了近44年来时相相对连续的冰…

使用LlamaIndex构建自己的PandasAI

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 Pandas AI 是一个 Python 库&#xff0c;它利用生成 AI 的强大功能来增强流行的数据分析库 Pandas。只需一个简单的提示&#xff0c;Pandas AI 就可以让你执行复杂的数据清理、分析和可视化&#xff0c;而这以前需要很…

为特征向量数据(1D数组)叠加噪声实现数据增强

为特征向量数据&#xff08;1D数组&#xff09;叠加噪声实现数据增强 日期作者版本备注2023.09.11Dog TaoV1.0完成文档的初始版本。 文章目录 为特征向量数据&#xff08;1D数组&#xff09;叠加噪声实现数据增强背景介绍叠加噪声的主要方法高斯噪声&#xff08;Gaussian Nois…

移动机器人(浙大)(待补充)

目录 1.简介 1.1分类 1.2执行模式 2.运动学建模 2.1简述 2.2建模 2.2.1分量叠加 3.导航规划 ​编辑 4.路径规划 1.简介 1.1分类 按移动方式&#xff1a;轮式、履带式、足式、躯干式 1.2执行模式 未知的环境中构建局部地图/已知环境则有地图&#xff0c;根据环境和定位信息进…