码迷,mamicode.com
首页 > 编程语言 > 详细

c++ 深拷贝string类 简单实现

时间:2015-11-29 06:54:53      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:c++;深拷贝;string 类

#include<iostream>//头文件
#pragma once

using namespace std;

class String
{
public:
	String(char* str="\0");
	~String();
	String(const String& str );
	void Cout();
	char& operator[](size_t index);
	String operator +(const String& str);
	String operator =(const String& str);
	String& operator +=(const String& str);


private:
	char* _string;

};


//函数文件
#include<iostream>
#include"string.h"

using namespace std;

String::String(char* str)
:_string(new char[strlen(str) + 1])
{
	strcpy(_string, str);
}

String::~String()
{
	if (_string)
	{
		delete[] _string;
		_string = NULL;
	}
}
String::String(const String& str )
{
	_string=new char[strlen(str._string) + 1];
	strcpy(_string, str._string);
}

void String::Cout()
{
	cout << _string << endl;
}

char& String:: operator[](size_t index)
{
	if (index < strlen(_string))
		return _string[index];
	else
		return _string[strlen(_string) - 1];
}

String String::operator +(const String& str)
{
	String tmp;
	tmp._string = new char[strlen(_string) + 1 + strlen(str._string)];
	strcpy(tmp._string, _string);
	strcat(tmp._string, str._string);
	return tmp;
}

String String::operator =(const String& str)
{
	if (&str != this)
	{
		_string = new char[strlen(str._string) + 1];
		strcpy(_string, str._string);
		return *this;
	}
	return *this;
}
String& String::operator +=(const String& str)
{
	char* tmp = new char[strlen(_string) + 1 + strlen(str._string)];
	strcpy(tmp, _string);
	strcat(tmp, str._string);
	delete[] _string;
	_string = tmp;
	return *this;
}

#include<iostream>//主函数  测试文件
#include"string.h"

using namespace std;

void test1()
{
	String s1("我是帅哥!");
	String s2(s1);
	String s3;
	s1.Cout();
	s2.Cout();
	s1[19] = ‘?‘;
	s3 = s3;
	
	s3.Cout();
	s1.Cout();
	s3 = s1 + s2;
	s3 += s1;
	s3.Cout();

}

int main()
{
	test1();
	return 0;
}


c++ 深拷贝string类 简单实现

标签:c++;深拷贝;string 类

原文地址:http://shaungqiran.blog.51cto.com/10532904/1717710

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!