c++ String实现 基于Vector

这篇博客探讨了C++中String类型的实现,重点在于其如何基于Vector进行操作。内容指出,当函数返回对象引用时,不应为局部变量,而返回对象则是返回其副本。
摘要由CSDN通过智能技术生成

学习这个,了解到的东西就是

一个函数的返回值如果是对象引用,那么这个返回值绝不能是一个局部变量;如果函数返回值是一个对象,那么返回值就是对象的副本了。

#ifndef _str_H
#define _str_h

#include"vec.h"

#include<cstring>
#include<cctype>
#include<algorithm>
#include<iterator>

class Str{
	Vec<char> data;
friend std::istream& operator>>(std::istream&,Str&);
public:
	typedef Vec<char>::size_type size_type;
	Str() {	}
	Str(size_type n,char c):data(n,c) { }
	Str(const char* s) {std::copy(s,s+std::strlen(s),std::back_inserter(data));	}
	template <class In> Str(In a,In b){ std::copy(a,b,std::back_inserter(data)); }
	size_type size()const {return data.size();}
	char& operator[](size_type i) {return data[i];}
	const char& operator[](size_type i)const {return data[i];}
	Str& operator+=(const Str& s){
		std::copy(s.data.begin(),s.data.end(),std::back_inserter(data));
		return *this;
	}
};



s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值