+ -
当前位置:首页 → 问答吧 → 关于一个整形数组的类

关于一个整形数组的类

时间:2011-11-29

来源:互联网

/****intArray.h*******************************************/
class intArray
{
private:
int *element; //指向动态数组的指针
int arraysize; //数组的当前长度
public:
intArray(int size); //构造函数
intArray(const intArray &x);//拷贝构造函数
~intArray();//析构函数
bool Set(int i,int elem);//设置第i个数组元素的值,设置成功返回true,失败返回false
bool Get(int i,int &elem);//获取第i个数组元素的值,设置成功返回true,失败返回false
int Length() const; //获取数组长度
void ReSize(int size);//重置数组
void Print();//输出数组

};
/*******************************************************************************************/
/********************intArray.cpp**********************************************************/
#include<iostream>
using namespace std;
#include<string.h>
#include"intArray.h"

intArray::intArray(int size)
{
arraysize=size;
element=new int[arraysize];
if(element!=NULL)
for(int i=0;i<arraysize;i++)
{ element[i]=0;}


}
intArray::intArray(const intArray &x)
{
arraysize=x.arraysize;
element=new int[arraysize];
if(element!=NULL)
for(int i=0;i<arraysize;i++)
{ element[i]=x.element[i];}



}

bool intArray::Set(int i,int elem)
{
 element[i]=elem;
 if(element[i]!=NULL)
return true;
 else 
return false;
}  
bool intArray::Get(int i,int &elem) //获取第i个元素
{  
  elem=element[i];
  if(elem!=NULL)
return true;
  else 
return false;
}
int intArray::Length() const

  return arraysize;
}
void intArray::ReSize(int size) //怎么重置数组???
{
}
void intArray::Print()
{for(int i=0;i<arraysize;i++)
  cout<<element[i]<<'\t';
}
intArray::~intArray()
{ delete []element;

}
void main()
{intArray a(10);
 intArray b(a);
 a.Set(5,10);
 int k;
 cout<<a.Get(5,k)<<'\t'<<b.Get(2,k)<<'\n'<<endl;//这样做到底对不对???
 cout<<a.Length()<<'\n'<<endl;
 a.Print();
 cout<<'\n'<<b.Length()<<'\n'<<endl;
 b.Print();

}
输出结果
1 0 //怎么会有1呢?
10
0 0 0 0 0 10 0 0 0 0
10
0 0 0 0 0 0 0 0 0 0
能不能解释?

作者: xviubu   发布时间: 2011-11-29

a.Get(5,k) 返回的

作者: merlin_q   发布时间: 2011-11-29

a.Get(5,k) 使k=10, 返回true
true被被定义了1, b.Get(2,k)使得k=0,NULL 被定义了0 
 if(elem!=NULL)返回的是 false 
结果返回0,
cout<<a.Get(5,k)<<'\t'<<b.Get(2,k)<<'\n'<<endl;
这一句就返回1, 0

引用 1 楼 merlin_q 的回复:

a.Get(5,k) 返回的

作者: merlin_q   发布时间: 2011-11-29

引用 2 楼 merlin_q 的回复:

a.Get(5,k) 使k=10, 返回true
true被被定义了1, b.Get(2,k)使得k=0,NULL 被定义了0
if(elem!=NULL)返回的是 false
结果返回0,
cout<<a.Get(5,k)<<'\t'<<b.Get(2,k)<<'\n'<<endl;
这一句就返回1, 0

引用 1 楼 merlin_q 的回复:

a.Get(5,k……

正解!!

作者: JieTouLangRen   发布时间: 2011-11-30