实现最简单的string类的深拷贝

#include<iostream>
using namespace std;

class String
{
public:
                String()
                                :_str( new char [1])
                {
                                _str = ‘\0‘;
                }
                String( const char * str)
                                :_str( new char [strlen(str) + 1])
                {
                                strcpy( this->_str ,str);
                }
                String( const String& str)
                                :_str( new char [strlen(str._str) + 1])
                {
                                strcpy( this->_str ,str._str);
                }
                ~String()
                {               
                                 delete []_str;
                }
                String& operator= (const String& str)
                {
                                String tmp(str);
                                swap( this->_str ,tmp._str );
                                 return *this ;
                }
                 void Display()
                {
                                printf( "%s\n",_str);
                }
private:
                 char *_str;
};

void test1()
{
                String s1( "change world");//构造
                s1.Display();
                String s2 = s1; //拷贝构造
                s2.Display();
                String s3;
                s3.Display();
                s3 = s1; //赋值拷贝
                s3.Display();
}

int main()
{
                test1();
                system( "pause");
                return 0;
}
时间: 2024-10-13 18:01:04

实现最简单的string类的深拷贝的相关文章

简单实现string类

简单实现string类,正确管理资源. 1.首先定义它的成员变量: private:     char* _data;//定义一个字符指针 2.实现它的构造函数: String(const char* str="") //如果定义对象时没有传参数,使用缺省构造参数构造出""字符串     :_data(new char[strlen(str)+1])    //+1表示多创建一个空间存'\0' {     strcpy(_data,str); } 3.实现拷贝构造

实现简单的string类

摘要 实现了一个string类,包括基本的构造.赋值.判断.大小写等. String API Constructors string(); string(const char& ch); string(const char* str); string(const string& str); Informational Methods unsigned Length() const; int Index(char c) const; Case Methods void UpCase(unsi

简单的String类实现及写时拷贝

#include<iostream> using namespace std; class String { public: /*String(const char* str=" ") :_str(new char[strlen(str)+1]) { strcpy(_str, str); } */ String(const char* str = " ") { if (str == NULL) { _str = new char; _str[0] = '

【c++】简单的string类的几个基本函数

// string的几个基本函数的实现 #include <iostream> #include <assert.h> #include <string.h> using namespace std; class String { public: String() { _str = new char[1]; _str[0] = '\0'; } String(char *str) { assert(str != NULL); _str = new char[strlen(

C++中简单的sting类的实现

String 在C++的学习生涯我中发现String类的功能十分强大,所以我们是很有必要模拟实现它的,况且在面试的时候模拟实现一个String类也是面试官经常会考的,但是因为外界因素的限制我们是不可能模拟的和库里的string一致的(C++库里的string功能更强大),所以今天我们只模拟实现string的基本功能-构造函数,拷贝构造函数,析构函数,赋值运算符重载,运算符+=的重载,运算符[]的重载,c_str(得到一个C风格的字符指针,可操作字符串),Size,Push_Back,Insert

C++ 模拟String类 相关

#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <cassert> using namespace std; //string 编写 /*版本1 以前的版本*/ /*************** class String { public: //错误 String(char *str = NULL) String(char *str = "") :_str(new char[strle

c++string类的相关操作

string的应用是非常典型的,下面我写了一些简单的string类的相关的一些操作,包括增删查改等一些功能和一些运算符的重载,包括他们的测试用例: #include<iostream>#include<string>#include<assert.h>using namespace std; #define CARA 3;class String{public: String(char *str = "")  :_str(new char[strle

【Java】整理关于java的String类,equals函数和比较操作符的区别

初学 Java 有段时间了,感觉似乎开始入了门,有了点儿感觉但是发现很多困惑和疑问而且均来自于最基础的知识折腾了一阵子又查了查书,终于对 String 这个特殊的对象有了点感悟大家先来看看一段奇怪的程序: public class TestString {       public static void main(String[] args) {           String s1 = "Monday";           String s2 = "Monday&qu

全面深入介绍C++字符串:string类

http://blog.csdn.net/liuliming3000/article/details/1809385 1 从C到C++ string类 2 string类的构造函数 3 string类的字符操作 4 string的特性描述 5 string类的输入输出操作 6 string的赋值 7 string的连接 8 string的比较 9 string类的查找函数 10 string类的替换函数 11 string类的插入函数 12 string类的删除函数 13 string类的迭代器