首页 > 其他分享 >一、MyString类的实现

一、MyString类的实现

时间:2024-08-02 16:52:56浏览次数:13  
标签:运算符 otherString 实现 构造 char length MyString

包括默认构造、有参构造、拷贝构造、拷贝赋值运算符、移动构造、移动赋值运算符及析构函数。

class MyString

{

    MyString(const char *buffer)//有参构造

    {

        length = strlen(buffer);

        m_char = new char[length + 1];

        strcpy(m_char, buffer);

    }

    MyString(const MyString &otherString)//拷贝构造

    {

        length = otherString.length;

        m_char = new char[length + 1];

        strcpy(m_char, otherString.m_char);

    }

    MyString &operator=(const MyString &otherString)//拷贝赋值运算符

    {

        if (this != &otherString)

        {

            delete[] m_char;

            length = otherString.length;

            m_char = new char[length + 1];

            strcpy(m_char, otherString.m_char);

        }

        return *this;

    }

    MyString(MyString &&otherString)//移动构造

    {

        length = otherString.length;

        m_char = otherString.m_char;

        otherString.m_char = nullptr;

        lotherString.ength = 0;

    }

    MyString &operator=(MyString &&otherString)//移动赋值运算符

    {

        if (this != &otherString)

        {

            length = otherString.length;

            m_char = otherString.m_char;

            otherString.m_char = nullptr;

            otherString.length = 0;

        }

        return *this;

    }

    ~MyString()//析构

    {

        delete[] m_char;

        length = 0;

    }

private:

    char *m_char;

    int length;

};

标签:运算符,otherString,实现,构造,char,length,MyString
From: https://blog.csdn.net/weixin_43627682/article/details/140874900

相关文章

  • CentOS 8 和 Ubuntu 20.04.2 LTS 中,您可以通过不同的方法实现在系统启动时自动运行特
    在CentOS8和Ubuntu20.04.2LTS中,您可以通过不同的方法实现在系统启动时自动运行特定指令或脚本。这里是关于两种方法的解释和区别:###方法一:使用`rc-local.service`**CentOS8示例:** $cat/etc/rc.local_my.sh#!/bin/bash/bin/bash-c"ip-6routeadddefaultvi......
  • Android开发 - (适配器)Adapter类中ArrayObjectAdapter实现类详细解析
    简介用于AndroidTV的Leanback库,用于绑定对象数组到UI组件具体作用ArrayObjectAdapter是RecyclerView和Adapter系列中用于处理列表数据的一种适配器类型,主要用于AndroidTV的Leanback库中的BrowseFragment、DetailFragment和PlaybackOverlayFragment等......
  • 神奇的进度条!水缸进度动画效果怎么实现的?
    最近看到一个非常有趣的动画效果:水波进度动画,想了一下实现思路,分享给大家~效果如下图片图片基本组件代码先把最基础的组件代码样式写出来,其实无非就是四个部分:1、圆形水缸2、水波2、百分比数字3、进度条我们先把圆形水缸、百分比数字、进度条画出来,水波待会再......
  • 【C#】WPF实现HaIcon图像缩放、移动
    1.HaIcon实现的C#代码////FilegeneratedbyHDevelopforHALCON/DOTNET(C#)Version12.0////ThisfileisintendedtobeusedwiththeHDevelopTemplateor//HDevelopTemplateWPFprojectslocatedunder%HALCONEXAMPLES%\c#usingSystem;usingSystem.Thre......
  • Applescrip成功实现FaceTime蓝号检测,检测是否开通FaceTime功能的实现原理
    FaceTime是苹果公司iOS和macOS(以前称MacOSX或OSX)内置的一款视频通话软件,通过Wi-Fi或者蜂窝数据接入互联网,在两个装有FaceTime的设备之间实现视频通话。其要求通话双方均具有装有FaceTime的苹果设备,苹果ID以及可接入互联网的3G/4G/5G或者Wi-Fi网络。一、Windows电脑上部署......
  • 双向链表的实现
    1、双向链表示意图 2、双向链表实现(1)结构体定义typedefintLTDataType;typedefstructListNode{ LTDataTypedata; structListNode*prev; structListNode*next; }LTNode;(2)初始化/****************初始化*****************/LTNode*ListInit(LTNode*phead......
  • HarmonyOS:如何实现自定义的Tabs,TabContent内部实现如何动态配置
    前言:最近做开发任务的时候,想把Tabs自定义了,并且动态配置TabContent里面的内容,不是写死一样的,这个问题困扰了很长时间,试过**@BuilderParam**(类似于vue的插槽)传组件方式的,但是**@BuilderParam只能传一个,我想要传递的是一个数组,找了很多Api最后找到了WrappedBuilder[]**这种方......
  • JAVA中实现队列和栈(Deque接口和ArrayDeque类)
    用什么来实现队列和栈首先JAVA中有一个Queue接口,用来实现队列。Deque其实就是双端队列,代表两端都可进可出的队列。ArrayDeque就是用数组来实现这个双端队列。(Deque由于是接口,只可以用于声明对象,但是没办法实例化,实例化还是要使用ArrayDeque类)这时可能就会产生疑惑,队列有了,......
  • iis安装数字证书ssl并实现http跳转https的301重定向
    iis安装数字证书ssl并实现http跳转https的301重定向为了增强网站的安全性,实现域名访问从HTTP自动跳转到HTTPS,您可以按照以下步骤操作:安装SSL证书:首先,您需要为您的网站获取一个SSL证书。这可以通过向证书颁发机构(CA)申请免费的证书(如Let'sEncrypt提供的证书)或购买商业证书来完成......
  • 为什么我在 Python 中的 Skip-Gram 实现会产生不正确的结果?
    我正在使用Python实现Word2Vec的Skip-Gram模型。然而,正如生成的嵌入及其可视化所示,我的模型似乎无法正常工作。这是嵌入的3D图的示例,它显示单词聚集在一起并重叠,因此很难区分它们:我怀疑问题在于我的实现而不是绘图函数。importnumpyasnpfromnltk.corpusimpor......