【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++ MyString类的简单实现

题目:string类的简单实现,本文中此类名为MyString 实现思路: 1 只要构造函数执行成功(其中pData_不为空) 2 构造函数可通过char*,字符串常量构造 3 重载运算符=(返回值为...
  • u013507368
  • u013507368
  • 2015年08月30日 22:55
  • 2320

一个简单的拼音输入法,实现常用汉字的输入

/* 这是一个简单的拼音输入法,只有常用的汉字,输入拼音后, 再输入数字,选择所需要的拼音 */ #include #include #include #define OUT...
  • YANGSENG1987
  • YANGSENG1987
  • 2013年08月28日 10:34
  • 4387

C语言-------实现一个简单的单向链表

编写一个链表程序,在程序中实现简单的功能#include #include struct node{ int num; char name[20]; struct node*...
  • zer1123
  • zer1123
  • 2017年02月09日 20:12
  • 2201

自我实现一个简洁版的String类——1

在C++中有C没有的string字符串类型,string类型的数据其实是一个指向字符串首地址的指针变量,因此在string类的默认成员函数拷贝构造和赋值运算符的重载就会涉及到深浅拷贝的问题,一不小心要...
  • Miss_Bread
  • Miss_Bread
  • 2017年10月20日 20:40
  • 45

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

简洁版: class String { public: String(char* pStr="") { if(pStr==NULL) { _pStr...
  • ChenMiao0924
  • ChenMiao0924
  • 2017年03月30日 15:12
  • 204

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

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

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

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

C++实现一个自己的string类

class String { public: String(const char *str = NULL);// 普通构造函数 String(const String &other); // 拷贝...
  • u011412619
  • u011412619
  • 2015年03月30日 21:26
  • 1803

C++面试题(二)——自己实现一个String类

C++面试题(二)——自己实现一个String类 tanglu http://blog.csdn.net/worldwindjp/ 实现一个自己的...
  • imxiangzi
  • imxiangzi
  • 2015年11月17日 22:32
  • 369

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

string类的实现 C++使用起来非常方便,原因的它里面包含的类,这种面向对象的思想让我们编程变得异常方便。 今天我们来实现一个string类,这个类主要的作用就是在C++中灵活的使用字符串。 现在...
  • Dawn_sf
  • Dawn_sf
  • 2017年03月13日 17:19
  • 413
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C++】实现一个简洁版的class String
举报原因:
原因补充:

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