构造和赋值的简单写法

一. swap

共有3个swap,算法库有一个,string中有两个。

算法库中的swap使用起来很简单,但是效率太低。
string中有两个,一个是在类里面实现的,一个是在类外面实现的。【都较简单】

1. 算法库中的swap

在这里插入图片描述

c(a);

(1) c是在作用域里面新创建的对象,c(a)是用参数a的初始化b【拷贝构造】。
(2) a=b;(a和b都是有值的。需先将a释放,然后再将b赋值给a)
(3) b=c;(先将b释放,再将c赋值给b)
(4) 最后,在出这个作用域的时候,将c释放掉。

整个过程中,需要3次构造,3次释放。

使用方法:

	string s1("helloworld");
	string s2("xxxxxxxxxx");
	swap(s2, s1);

在这里插入图片描述

string中的swap

在这里插入图片描述
string中的swap,它没有三构三析。它只是将两个对象的指针,_capacity,_size交换了,以此达到交换的目的。

(指针(char*)和空间大小(size_t)等都是内置类型,交换内置类型,不需要自己写交换逻辑,可以直接调用算法库的swap。但是但是,注意:当在局部域的时候,会优先调用自己里面的swap,所以需要指明命名空间域std::)

//模拟实现string的swap
	void string::swap(string& s)
	{
   
   
		std::<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值