首页 > 其他 > 详细

day11pm--拷贝构造函数(深拷贝、浅拷贝)

时间:2014-03-26 13:40:01      阅读:525      评论:0      收藏:0      [点我收藏+]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//随时调整长短是数组,数据不会丢
//拷贝构造函数
/*例子函数头的表示方法
@函数名称:  strcpy
函数原型:  char* strcpy(char* str1,char* str2);
函数功能:  把str2指向的字符串拷贝到str1中去
函数返回:  返回str1,即指向str1的指针
参数说明: */
#include<iostream>
using namespace std;
 
class Array{
    char *p;
    int len;
public:
    Array(int n):len(0),p(NULL){
        resize(n);
    }
    void resize(int n){
        char* q=new char[n];///new 新长度 数组
        int min=(n<len?n:len);
        if (p!=NULL)
        {
            for(int i=0;i<min;i++)
                q[i]=p[i];
            delete[] p;
        }
            p=q;
            for(int i=min;i<n;i++)
                p[i]=‘\0‘;
           len=n;
    }
 
    int  size(){
        return len;
    }
    void set(int index,char value){
        p[index]=value;
    }
    char get(int index){
        return p[index];
    }
    ~Array(){
        if(p!=NULL){delete[] p;
        p=NULL;}
    }
    void fill(char start,int skip){
        for (int i=0;i<len;i++)
        {
            p[i]=start+i*skip;
        }
    }
    void show(){
        for (int i=0;i<len;i++)
            cout<<p[i];
        cout<<endl;
    }
/////////////拷贝构造函数/---深拷贝////////////////////
    Array(const Array& o):len(o.len){
          p= new char[len];
          for (int i=0;i<len;i++)
          p[i]=o.p[i];
    }
};///只是复制是数据
 
int main(){
    Array a1(10);
    /*Array a2(20);
    cout<<"input chars(ends by $):";
    for (int i=0;;i++)
    {char ch;
    cin>>ch;
    if(ch==‘$‘)
        break;
    else if(i+1>a1.size())
        a1.resize(i+10);
    a1.set(i,ch);
    }
 
    for (int i=0;i<a1.size();i++)
    {
        cout<<a1.get(i);
    }
    cout<<endl;*/
    a1.fill(‘a‘,2);
    a1.show();
 
    Array a2(a1);//a1 初始化 a2
    a2.fill(‘A‘,1);
    a2.show();
    a1.show();
}

  

day11pm--拷贝构造函数(深拷贝、浅拷贝),布布扣,bubuko.com

day11pm--拷贝构造函数(深拷贝、浅拷贝)

原文:http://www.cnblogs.com/Flyzhcong/p/3624815.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!