C++构造函数和析构函数的使用问题
作业题目是要学会使用构造函数和析构函数
我自己编译了一个程序,可是有几处错误,希望高手指点一下
我的程序是这样的:
#include<iostream.h>
class CArray{
int nSizeOfInt; //整形数组的大小
int nNumOfInt; //整形数组中实际存放的元素个数
int nSizeOfFloat; //浮点数组的大小
float nNumOfFloat; //浮点数组中实际存放的元素个数
int *pInt; //指向整形数组,动态分配内存空间
int *pFloat; //指向浮点数组,动态分配内存空间
public:
CArray(int nIntSize=100,int nFloatSize=200):
void put(int n); //将n加入到整形数组中
void put(float x); //将x加入到浮点数组中
int getInt(int index)
//取整形数组中第index个元素,index从0开始
{
return(pInt[index]);
}
float getFloat(int index)
// re取浮点数组中第index个元素,index从0开始
{
turn(pFloat[index]);
}
~CArray(); //析构函数,释放动态分配的内存空间
void print(); //分别输出整形数组和浮点数组中的所有元素
};
CArray::CArray(int nIntSize,int nFloatSize)
{
nSizeOfInt=nIntSize;
nSizeOfFloat=nFloatSize;
int *pInt=new int [nSizeOfInt];
float *pFloat=new float[nSizeOfFloat];
nNumOfInt=0;
nNumOfFloat=0;
}
void CArray::put(int n)
{
if(nNumOfInt<nSizeOfInt)
{
pInt[nNumOfInt]=n;
nNumOfInt++;
}
else
{
cout<<"overflow";
}
}
void CArray::put(float x)
{
if(nNumOfFloat<nSizeOfFloat)
{
pFloat[nNumOfFloat]=x;
nNumOfFloat++;
}
else
{
cout<<"overflow";
}
}
CArray::~CArray()
{
delete []pInt;
delete []pFloat;
}
void CArray::print()
{
for(int i=0;i<nNumOfInt;i++)
cout<<pInt[i]<<", ";
cout<<endl;
for(int j=0;j<nNumOfFloat;j++)
cout<<pFloat[j]<<", ";
}
int main()
{
CArray s(20,40);
s.put(1);
s.put(2);
s.put(3);
s.put(1.0);
s.put(2.0);
s.put(3.0);
s.print();
cout<<"整形数组中第2个元素:"<<s.getInt(2)<<endl;
cout<<"浮点数组中第3个元素:"<<s.getFloat(3)<<endl;
return 0;
}
错误提示:error C2969: syntax error : ';' : expected member function definition to end with '}'
error C2511: 'put' : overloaded member function 'void (int)' not found in 'CArray'
E:\\C++程序的收藏\\实验\\实验三.cpp(2) : see declaration of 'CArray'
error C2108: subscript is not of integral type
error C2440: '=' : cannot convert from 'float' to 'int *'
答案:注意我和你有些地方写法不太一样,构造函数我一般喜欢这样写。
#include<iostream.h>
class CArray{
public:
int nSizeOfInt; //整形数组的大小
int nNumOfInt; //整形数组中实际存放的元素个数
int nSizeOfFloat; //浮点数组的大小
int nNumOfFloat; //浮点数组中实际存放的元素个数 !!更改为int
int *pInt; //指向整形数组,动态分配内存空间
float *pFloat; //指向浮点数组,动态分配内存空间
CArray();//我有两个构造函数,重载了。
CArray(int nIntSize,int nFloatSize);
void put(int n); //将n加入到整形数组中
void put(float x); //将x加入到浮点数组中
int getInt(int index) //取整形数组中第index个元素,index从0开始
{
return(pInt[index]);
}
float getFloat(int index) // re取浮点数组中第index个元素,index从0开始
{
return(pFloat[index]); //return!!!
}
~CArray(); //析构函数,释放动态分配的内存空间
void print(); //分别输出整形数组和浮点数组中的所有元素
};
CArray::CArray()
{
this->nSizeOfInt=100;this->nSizeOfFloat=200;//指向操作符
}
CArray::CArray(int nIntSize,int nFloatSize)
{
this->nSizeOfInt=nIntSize; //同上
this->nSizeOfFloat=nFloatSize;
pInt=new int [nSizeOfInt]; //不用再加int了,前面已经定义了
pFloat=new float[nSizeOfFloat];
nNumOfInt=0;
nNumOfFloat=0;
}
void CArray::put(int n)
{
if(nNumOfInt<nSizeOfInt)
{
pInt[nNumOfInt]=n;
nNumOfInt++;
}
else
{
cout<<"overflow";
}
}
void CArray::put(float x)
{
if(nNumOfFloat<nSizeOfFloat)
{
pFloat[nNumOfFloat]=x;
nNumOfFloat++;
}
else
{
cout<<"overflow";
}
}
CArray::~CArray()
{
delete []pInt;
delete []pFloat;
}
void CArray::print()
{
for(int i=0;i<nNumOfInt;i++)
cout<<pInt[i]<<", ";
cout<<endl;
for(int j=0;j<nNumOfFloat;j++)
cout<<pFloat[j]<<", ";
cout<<endl;//加一换行
}
int main()
{
CArray s(20,40);
s.put(1);
s.put(2);
s.put(3);
s.put(1.0f); //必须增加f!!!
s.put(2.0f);
s.put(3.0f);
s.put(5.8f);//我给你增加了一个元素,因为你要访问下标3,要有四个元素
s.print();
cout<<"整形数组中第2个元素:"<<s.getInt(2)<<endl;
cout<<"浮点数组中第3个元素:"<<s.getFloat(3)<<endl; //下标3是第四个元素,我给你增加了一个元素
return 0;
}
上一个:电话簿管理程序设计(一定用c++)
下一个:关于C++订单管理保存订单信息代码