什么时候在创立对象时后边必须要加初始化?
自己写了一个简单的插入排序:#include<iostream>
using namespace std;
class Cha
{
public:
Cha(); //如果我不写这个默认构造函数,那么main函数中Cha obj; 就没有问题;可是我一写上这句,就在 main函数中Cha obj; 这句出错。但是 写为Cha obj(5);就没问题了,这是为什么?为什么一定要加一个初始赋值?
Cha(int a=5);
void chasort();
~Cha();
void Show();
private:
int *p;
int n;
};
Cha::Cha()
{
}
Cha::Cha(int a)
{
cout<<"输入数据元素个数n=";
cin>>a;
n=a;
p=new int [n];
cout<<"依次输入数据内容:";
for(int i=0;i<n;i++) //初始化了一组数据
cin>>p[i];
}
void Cha::chasort()
{
int i,j,t,temp;
for(i=1;i<n;i++)
{
for(j=0;j<=i-1;j++)
{
t=p[i];
temp=i;
if(p[i]<p[j])
{
while(i>=j+1)
{
p[i]=p[i-1];
i--;
}
i=temp;
p[j]=t;
}
}
}
}
Cha::~Cha()
{
delete[]p;
cout<<"释放该组数据"<<endl;
}
void Cha::Show()
{
for(int i=0;i<n;i++)
cout<<p[i]<<" ";
cout<<endl;
}
int main()
{
Cha obj; //这句总是出错
obj.chasort();
obj.Show();
return 0;
}