#include<iostream>
using namespace std;
class Array
{
public:
Array(); //无参数的构造函数
Array(int n); //带参数的构造函数
Array(const int a[],int n); //构造函数,用数组a对动态数组进行初始化,n为a数组的长度
Array(const Array &v); //复制构造函数,实现深复制
~Array(); //析构函数
void Show(); //显示数据
void Resize(int n); //动态数组重新设定长度,n为重新设定的数组长度。
//如果n比原数组长度小,则取原数组的前n个元素给重新设定
//的数组;如果n比原长度大,则将原数组的所有数组元素
//给重新设定的数组
private:
int *p;
int size;
};
Array::Array()
{
int i;
size=5;
p=new int[size];
for(i=0;i<size;i++)
p[i]=0;
}
Array::Array(int n)
{
int i;
size=n;
p=new int[size];
for(i=0;i<size;i++)
p[i]=0;
}
Array::Array(const int a[],int n)
{
int i;
size=n;
p=new int[size];
for(i=0;i<n;i++)
p[i]=a[i];
}
Array::Array(const Array &v)
{
int i;
int *pa;
pa=v.p;
size=v.size;
p=new int[size];
for(i=0;i<size;i++)
p[i]=pa[i];
}
Array::~Array()
{
delete p;
cout<<"执行析构函数!"<<endl;
}
void Array::Show()
{
int *pa;
int i;
pa=p;
for(i=0;i<size;i++)
cout<<pa[i]<<",";
}
void Array::Resize(int n)
{
int a[100];
int i;
for(i=0;i<size;i++)
{
a[i]=0;
a[i]=p[i];
}
size=n;
p=new int[size];
for(i=0;i<size;i++)
p[i]=a[i];
}
int main()
{
Array a1;
a1.Show();
system("pause");
Array a2(10);
a2.Show();
system("pause");
int b[5]={1,2,3,4,5};
Array a3(b,5);
a3.Show();
system("pause");
Array a4(a3);
a4.Show();
system("pause");
a4.Resize(3);
a4.Show();
system("pause");
a4.Resize(5);
a4.Show();
system("pause");
return 0;
}初学cpp<classl类02>
最新推荐文章于 2022-05-08 17:06:39 发布
本文介绍了一个自定义的动态数组类的实现过程,包括无参构造函数、带参数构造函数、复制构造函数等,并展示了如何使用该类进行数组的创建、显示及调整大小。
954

被折叠的 条评论
为什么被折叠?



