|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目要求:
定义素数类Prime,该类有数据成员:
int num 保存素数的个数,
int *pn 指向动态申请的整型数组,保存前num个素数。
void create()函数,产生前num个素数,保存在pn指向的数组中。
定义Prime类的构造函数、深复制构造数、析构函数,输出数组中所有素数的函数。并在主函数定义Prime类的对象,调用成员函数。
出现问题:
深复制对象没有数据结果。
代码附上:
#include<iostream>
using namespace std;
class Prime
{
private:
int num;
int *pn;
public:
Prime(int n,int *p)
{
num=n;
int begin,i,j=0,n1=0;
if(pn!=NULL)
{
pn=new int[num];
for(begin=1;n1<=num;begin++)
{
for(i=2;i<begin;i++)
{
if(begin%i==0)break;
}
if(i>=begin)
{
pn[j++]=begin;
n1++;
}
}
}
}
~Prime()
{
if(pn!=NULL)
{
cout<<"\n"<<"对象被析构";
delete [] pn;
}
}
Prime(Prime& pp)
{
int i=0;
int size=pp.num;
pn=new int[size];
if(pn!=NULL)
{
for(i=0;i<size;i++)
{
pn[i]=pp.pn[i];
}
}
}
void create(int n)
{
num=n;
}
void show()
{
int i;
for(i=0;i<num;i++)cout<<pn[i]<<" ";
}
};
int main()
{
int *p;
p=new int[10];
Prime p1(10,p);
Prime p2(p1);
cout<<"\n"<<"对象p1前十个素数为:"<<"\n";
p1.show();
cout<<"\n"<<"深复制对象p2前十个素数为:"<<"\n";
p2.show();
cout<<"\n"<<"改变素数个数:"<<"\n";
p1.create(5);
p1.show();
}
运行结果:
|
-
|