#include <iostream>
2 using namespace std;
3 class Array{
4 int* data;//真正存储数据的地址
5 int len;//大小
6 int size;//元素个数
7 private:
8 void expend(){//扩容函数
9 len = 2 * len +1;
10 /*保留原来的数据的地址*/
11 int *temp = data;
12 /*申请新内存*/
13 data = new int[len];
14 /*复制原来的数据*/
15 for(int i = 0;i < size;i++){
16 data[i] = temp[i];
17 }
18 /*释放原来的内存*/
19 delete[] temp;
20 }
21 public:
22 Array(int len = 5):size(0){
23 //根据传入的数据分配空间
24 data = new int [len];
25 }
26 ~Array(){
27 if(data){
28 delete[] data;
29 data = NULL;
30 }
31 }
32 /*拷贝构造函数*/
33 Array(const Array& arr){
34 len = arr.len;
35 size = arr.size;
36 //根据长度开辟新空间
37 data = new int[len];
38 /*拷贝值*/
39 for(int i = 0;i < size;i++){
40 //data[i] = arr.data[i];
41 *(data+i) = *(arr.data+i);
42 }
43 }
44 void push_data(const int& d){
45 if(size >= len){
46 //扩容
47 expend();
48 }
49 else{
50 data[size++] = d;
51 }
52 }
53 friend ostream& operator<<(ostream& os,const Array& arr){
54 for(int i = 0;i < arr.size;i++){
55 os << arr.data[i] << " ";
56 }
57 return os;
58 }
59 };
60 int main(){
61 Array arr;
62 arr.push_data(9);
63 arr.push_data(5);
64 arr.push_data(2);
65 arr.push_data(7);
66 arr.push_data(8);
67 arr.push_data(8);
68 arr.push_data(8);
69 arr.push_data(8);
70 arr.push_data(8);
71 Array arr2 = arr;
72 cout << arr << endl;
73 cout << arr2 << endl;
74 return 0;
75 }
2 using namespace std;
3 class Array{
4 int* data;//真正存储数据的地址
5 int len;//大小
6 int size;//元素个数
7 private:
8 void expend(){//扩容函数
9 len = 2 * len +1;
10 /*保留原来的数据的地址*/
11 int *temp = data;
12 /*申请新内存*/
13 data = new int[len];
14 /*复制原来的数据*/
15 for(int i = 0;i < size;i++){
16 data[i] = temp[i];
17 }
18 /*释放原来的内存*/
19 delete[] temp;
20 }
21 public:
22 Array(int len = 5):size(0){
23 //根据传入的数据分配空间
24 data = new int [len];
25 }
26 ~Array(){
27 if(data){
28 delete[] data;
29 data = NULL;
30 }
31 }
32 /*拷贝构造函数*/
33 Array(const Array& arr){
34 len = arr.len;
35 size = arr.size;
36 //根据长度开辟新空间
37 data = new int[len];
38 /*拷贝值*/
39 for(int i = 0;i < size;i++){
40 //data[i] = arr.data[i];
41 *(data+i) = *(arr.data+i);
42 }
43 }
44 void push_data(const int& d){
45 if(size >= len){
46 //扩容
47 expend();
48 }
49 else{
50 data[size++] = d;
51 }
52 }
53 friend ostream& operator<<(ostream& os,const Array& arr){
54 for(int i = 0;i < arr.size;i++){
55 os << arr.data[i] << " ";
56 }
57 return os;
58 }
59 };
60 int main(){
61 Array arr;
62 arr.push_data(9);
63 arr.push_data(5);
64 arr.push_data(2);
65 arr.push_data(7);
66 arr.push_data(8);
67 arr.push_data(8);
68 arr.push_data(8);
69 arr.push_data(8);
70 arr.push_data(8);
71 Array arr2 = arr;
72 cout << arr << endl;
73 cout << arr2 << endl;
74 return 0;
75 }
在初始化的大小时不填满数组输出会缺失,但是在大于初始化大小时段错误,应该是扩容出现问题!一直没找到!