码迷,mamicode.com
首页 > 其他好文 > 详细

深拷贝&浅拷贝

时间:2016-03-12 23:11:23      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:深拷贝与浅拷贝

STRING.h文件


#pragma once

#include<string.h>

class String

{

public:

String(char* str="")      //深拷贝

:_str(new char[strlen(str)+1])

{

strcpy(_str, str);

cout << "构造函数 " << endl;

}

~String()

if (_str!=NULL)

{

delete[]_str;

}

cout << "析构函数" << endl;

}

String(const String& s)      //深拷贝

:_str(new char[strlen(s._str) + 1])

{

strcpy(_str, s._str);

cout << "拷贝构造函数" << endl;

}


/*String(const String& s)

:_str(NULL)

{

String tmp(s._str);

swap(_str, tmp._str);

}*/


String &operator=(const String& s)

{

if (this != &s)       //传统写法,有弊端

{

/*delete[]_str;

_str = new char[(strlen(s.str) + 1)];//----如果没有空间怎么办

strcpy(_str, s._str);*/



char *tmp = new char[strlen(s._str) + 1];//现代写法

strcpy(tmp, s._str);

delete[] _str;

_str = tmp;


cout << "赋值运算符重载" << endl;

return *this;

}

private:

char* _str;

};



test.cpp文件


#include<iostream>

using namespace std;

#include"STRING.h"



int main()

{

String s1;

String s2("abcd");

s1 = s2;

String s3 = s2;

int i = 0;

system("pause");

return 0;

}


本文出自 “学习记录” 博客,请务必保留此出处http://10794428.blog.51cto.com/10784428/1750310

深拷贝&浅拷贝

标签:深拷贝与浅拷贝

原文地址:http://10794428.blog.51cto.com/10784428/1750310

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