string类的简洁版实现

个站

首页_码到城攻码到城攻分享但不限于IT技术经验技巧、软硬资源、所闻所见所领会等,站点提供移动阅读、文章搜索、在线留言、支付打赏、个人中心、免签支付等功能https://www.codecomeon.com/

说是原创,差不多算是转载了,我也是看了好多大牛的写法,大牛的建议,自己加一总结,形成代码:

实现一个简洁版的string类,我觉得,下面的也够了:另外需要参见另外的写法:

类中赋值运算符重载函数_码城的博客-CSDN博客

#pragma once

class String
{
public:
	//1.无参构造
	String()
		:_str(new char[1])
	{
		*_str = '\0';
	}

	//2.有参构造
	String(char *str)
		:_str(new char[strlen(str) + 1])
	{
		strcpy(_str,str);
	}

	//3.拷贝构造
	String(const String& str)
		:_str(new char[str.size() + 1])   //size返回str对象的_str大小
	{
		strcpy(_str,str.c_str());         //c_str() 返回str对象的_str;
	}

	//4.析构
	~String()
	{
		delete[] _str;
	}

	//5.赋值运算符的重载
	String& operator=(const String& str)
	{
		String temp(str);
		swap1(str);
		return *this;
	}
		
	//其余可写可不写

	//辅助函数
	size_t size() const
	{
		return strlen(_str);
	}

	const char* c_str() const
	{
		return _str;
	}

	void swap1(const String& str) const
	{
		std::swap(_str,str._str);
	}
private:
	char *_str;
};

很简单,没有什么要着重讲的,但是,我保证以后遇见不会再写错,强烈建议,看懂这个,再看看我的另一篇博客,见链接;

赐教!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值