【C++】实现一个简洁版的class String

原创 2015年07月10日 10:28:21
//实现一个简洁版的class String
#include <iostream>
#include <string.h>
using namespace std;
class String
{
public:
	String()
	{
		_str = new char[1];
		_str[0] = '\0';
	}
	String(const char *str)
	{
		_str = new char[strlen(str) + 1];
		strcpy(_str, str);
	}
	String(const String &s)
	{
		_str = new char[strlen(s._str) + 1];
		strcpy(_str, s._str);
	}
	String& operator=(const String &s)
	{
		/*if (this != &s)                           //普通方法有缺陷
		{
		delete[] _str;
		_str = new char[strlen(s._str) + 1];
		strcpy(_str, s._str);
		}
		return *this;
		*/
		if (&s != this)                                //异常安全的神赋值
		{
			String tmp(s._str);
			swap(_str, tmp._str);
		}
		return *this;
	}
	~String()
	{
		if (_str)
			delete[] _str;
	}
	void print()
	{
		cout << _str << endl;
	}
private:
	char * _str;
};
int main()
{
	String s1;
	String s2("abcdef");
	String s3(s2);
	String s4 = s3;
	s1 = s2;
	s1.print();
	s2.print();
	s3.print();
	s4.print();
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

c++ string类深拷贝其他版本(简洁版,引用计数版,写时拷贝版)

简洁版: class String { public: String(char* pStr="") { if(pStr==NULL) { _pStr...

C++实现一个简洁而又强大的日志记录类

代码执行时记录日志是很有必要的,尤其在涉及到多进程、多线程调试或者是调试服务程序时。本分分享一个最近写的简单的日志类,希望有所帮助。不喜欢废话,上代码了: 头文件如下: #pragma once #i...
  • mfcing
  • mfcing
  • 2014年12月18日 15:46
  • 5255

码农的视角:马云菜鸟物流的一个简洁版实现

龟兔赛跑的物流玄机       80后的我们大都接受了一个励志的寓言故事:龟兔赛跑。这个寓言有很多版本,有的说兔子太骄傲,在比赛的时候睡大觉,结果被乌龟给拼命地赢了。有的说,乌龟很聪明,在比赛的路上不...

c++ — 实现一个简单的string类

string类的实现 C++使用起来非常方便,原因的它里面包含的类,这种面向对象的思想让我们编程变得异常方便。 今天我们来实现一个string类,这个类主要的作用就是在C++中灵活的使用字符串。 现在...
  • Dawn_sf
  • Dawn_sf
  • 2017年03月13日 17:19
  • 344

Primer plus C++ 第十一章 类和动态内存分配_反面理解String类(class and dynamic memory allocation)

/************************************************************************/ /* strngbad.h __ flawed(...

String class by C++

I spend three hours for this class today. It is a very interesting to consider the detail  about how...

C++中处理字符串的Class-----string 用法详解

C++ string 用法详解 /////////////////////////////////////////////////////////////////////////////////// ...

一个可以放入STL容器的简洁、高效、非计数的智能指针实现

只要学过C++的都知道STL内有一个auto_ptr的智能指针实现,可惜的很这个智能指针和STL容器格格不入,无法和像vector、list、deque、map、set等这样关键性的容器配合使用,大大...

一行js代码!实现一个简洁表格

周一开学了,回去补考 物流 ,悲催的人生。    废话不多说,直接上代码,嗯,4行了,不过明眼人都能看出来它还是一行吧。。 var myTable=new Table({ titl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C++】实现一个简洁版的class String
举报原因:
原因补充:

(最多只允许输入30个字)