#ifndef _MyArray_H
#define _MyArray_H
#include <iostream>
using namespace std;
class Array
{
public:
Array(int size);
int length();
void setData(int i,int j);
int getData(int i);
Array(const Array &obj);
~Array();
private:
int *m_p;
int m_size;
int m_i;
};
#endif
#include "MyArray.h"
#include <string.h>
Array::Array(int size)//创建数组,分配大小
{
m_size=size;
m_p=new int[m_size];
}
int Array::length()//计算长度
{
return m_size;
}
void Array::setData(int i,int j)//设置数组所有元素的值
{
m_i=i;
m_p[m_i]=j;
}
int Array::getData(int i)//获取数组元素的值
{
m_i=i;
return m_p[m_i];
}
Array::Array(const Array &obj)//拷贝构造函数
{
m_p=new int[obj.m_size];
m_size=obj.m_size;
for(int m_i=0;m_i<obj.m_size;m_i++)
{
m_p[m_i]=obj.m_p[m_i];
}
}
Array::~Array()
{
if(m_p!=NULL)
{
delete []m_p;
m_p=NULL;
}
cout<<"调用析构函数"<<endl;
}
#include <iostream>
#include "MyArray.h"
using namespace std;
int main()
{
// 自己写MyArray.h 头文件和 MyArray.cpp 源文件 实现数组类 Array
// 数组类的构造函数有一个 int 型参数 表示数组的大小
Array a1(10);
// 数组类有一个 length 方法 用于获取数组的大小
for (int i=0; i<a1.length(); i++)
{
// 设置数组的元素 ,第一个参数表示下标,第二个参数表示 下标对应的值
a1.setData(i, i);
}
cout<<"\n打印数组a1: ";
for (int i=0; i<a1.length(); i++)
{
// 获取数组元素 ,参数表示数组下标
cout<<a1.getData(i)<<" ";
}
cout<<endl;
// 完成数组的拷贝构造函数,允许两个数组对象互相赋值
Array a2 = a1;
cout<<"\n打印数组a2: ";
for (int i=0; i<a2.length(); i++)
{
cout<<a2.getData(i)<<" ";
}
cout<<endl;
cout<<"hello..."<<endl;
return 0;
}