首页 > 其他分享 >String类的实现

String类的实现

时间:2023-08-29 12:35:16浏览次数:37  
标签:副本 const String 实现 char str myString data


class myString
{
public:
	myString(const char *str = nullptr) {
		data = new char[strlen(str) + 1];
		strcpy(data, str);
	}
	myString(const myString &str) {
		if (this != &str)// 和自己比较
		{
			// 深拷贝,重新申请空间
			data = new char[strlen(str.data) + 1];
			strcpy(data, str.data);
		}
	}
	// 只有返回引用才能连续赋值
	myString& operator=(const myString& str) {
		if (this != &str)
		{
			// 先对打算修改的对象生成一个副本(copy),在副本上做必要的修改。
			// 如果生成副本时出现任何异常,原对象依然能保证不变。
			myString tmp(str);
			swap(data, tmp.data);
			return *this;
		}
	}
	~myString() {
		delete[] data;
	}
private:
	char *data;
};


标签:副本,const,String,实现,char,str,myString,data
From: https://blog.51cto.com/u_6526235/7274789

相关文章

  • redis分布式锁,setnx+lua脚本的java实现 | 京东物流技术团队
    1前言在现在工作中,为保障服务的高可用,应对单点故障、负载量过大等单机部署带来的问题,生产环境常用多机部署。为解决多机房部署导致的数据不一致问题,我们常会选择用分布式锁。目前其他比较常见的实现方案我列举在下面:基于缓存实现分布式锁(本文主要使用redis实现)基于数据库实现分布......
  • 加密狗能实现什么功能?
    加密狗主要作用是给软件做加密和授权,防止逆向,配合软件的销售模式实现限时、限次、限制功能等,目前新一代的加密狗要具备以下功能!第一,安全加壳配合加密锁快速集成软件,加密锁厂商需要提供加壳工具保护软件代码的安全,防止被反编译。例如深盾科技的精锐5加密锁配套的加壳工具(VirboxPro......
  • 从零开始:开发高效直播带货系统源码的关键步骤与源码实现
    直播带货系统结合了实时互动和购物体验,为品牌和消费者之间建立了更紧密的联系。本文将介绍开发高效直播带货系统的关键步骤,并深入探讨其中的源码实现。第一步:项目规划与架构设计在开发直播带货系统之前,首先需要进行全面的项目规划与架构设计。这包括明确系统的功能需求、用户角色、......
  • 【数据结构与算法】TypeScript 实现图结构
    classGrapg<T>{//用于存储所有的顶点verteces:T[]=[];//用于存储所有的边采用邻接表的形式adjList:Map<T,T[]>=newMap();//添加顶点addVertex(v:T){this.verteces.push(v);//初始化顶点的邻接表this.adjList.set(v,[]);}......
  • Java 15 JSTL实现登录退出
     jstl.jsp<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><%--if--%><%@taglibprefix="fmt"uri=&......
  • RTSP/Onvif协议EasyNVR安防视频云平台配置录像阈值实现边删边录需求的具体操作步骤
    EasyNVR是基于RTSP/Onvif协议的视频接入、处理及分发的安防视频云平台,可提供丰富且灵活的视频能力,包括:设备接入、实时视频直播、录像、云存储、录像回放与检索等功能,也能支持GB28181协议进行平台级联。有很多用户咨询我们,在EasyNVR使用过程中,当开启录像时,如果磁盘的存储空间满了,就......
  • Karmada 结合 coreDNS 插件实现跨集群统一域名访问
    本文分享自华为云社区《Karmada结合coreDNS插件实现跨集群统一域名访问》,作者:云容器大未来。在多云与混合云越来越成为企业标配的今天,服务的部署和访问往往不在一个K8s集群中。如何做到服务访问与集群无关,成为了各个云服务提供商必须要面对的问题。本文基于Karmadav1.6.1版......
  • 加密狗能实现什么功能?
    加密狗主要作用是给软件做加密和授权,防止盗版,配合软件的销售模式实现限时、限次、限制功能等,目前新一代的加密狗要具备以下功能!加密锁第一,安全加壳配合加密锁快速集成软件,加密锁厂商需要提供加壳工具保护软件代码的安全,防止被反编译。例如深盾科技的精锐5加密锁配套的加壳......
  • 购物系统分析与实现 - Java编程案例
    目录1.购物系统分析2.实现购物系统2.1程序入口2.2菜单显示2.3用户输入2.4计算购买数量和剩余金额2.5结果输出3.执行购物系统总结简介:本文将介绍一个简单的购物系统的实现,使用Java编程语言来实现一个基于控制台的购物系统。通过这个实例,我们可以学习如何进行用户输入、条件......
  • 张三坐电梯的计算问题 - Java编程实现
    摘要:本文介绍了一个关于张三坐电梯的计算问题,并通过Java代码实现了解决方案。在张三学校的教学楼前排了很多人,他的前面有n个人在等电梯。电梯每次可以乘坐12人,每次上下需要的时间为4分钟(上需要2分钟,下需要2分钟)。现在,我们需要帮助张三计算还需要多少分钟才能乘电梯到达楼上。我们......