c++高手请进:

来源:百度知道 编辑:UC知道 时间:2024/09/18 05:18:01
#include"iostream.h"
class A
{
int a,b;
public:
A();
A(int i);
A(int i,int j);
~A();
void print();
};
A::A()
{
a=b=0;
cout<<"default constructor called.\n";
}
A::A(int i)
{
a=i;
b=0;
cout<<"constructor1 called.\n";
}
A::A(int i,int j)
{
a=i;
b=j;
cout<<"constructor2 called.\n";
}
A::~A()
{
cout<<"destructor called .\n";
}
void A::print()
{
cout<<"a="<<a<<",b="<<b<<endl;
}
void main()
{

A pr;
pr=new A[3];
pr[0]=A();
pr[1]=A(6);
pr[2]=A(8,9);
for(int i=0;i<3;i++)
pr[i].print();
delete[] pr;
}兄弟,帮我看一下,哪里有错误,怎么编译不了?

按照你的思路应写为
A *pr;
就可通过。但这并不完美,因为每个实例都被构造了两次,一次是在new的时候,另一次是直接写出的语句。我想你真正想做的应该是:

A *pr[3];
pr[0]=new A();
pr[1]=new A(6);
pr[2]=new A(8,9);
for(int i=0;i<3;i++) pr[i]->print();
delete pr[0];
delete pr[1];
delete pr[2];

复制
关掉软件
然后再打开
粘贴
可以运行了

A pr;
pr=new A[3];
pr是一个对象 =new A[3] 什么意思呢?