程序中的动态空间申请不是很理解,大家帮忙解释下了,万分感谢!
程序如下:#include<iostream.h>
#include<string.h>
class student
{
char num[10];
char *name;
int score;
public:
student(char *nump,char *namep,int score) //构造函数
{
if(nump) //在构造函数中,不需要动态申请num成员的空间
strcpy(num,nump);
else
strcpy(num," ");
if(namep) //在构造函数中,需动态申请name成员的空间
{
name=new char[strlen(namep)+1];
strcpy(name,namep);
}
else name=0;
score=score;
cout<<"constructor called!\n";
}
~student() //在析构函数中,需释放name成员的空间
{
if(name) delete [] name;
cout<<"destructor called!\n";
}
void show()
{
cout<<num<<'\t'<<name<<'\t'<<score<<endl;
}
};
void main()
{
student a("040120518","george",80);
a.show();
}
其中,
if(nump)代表的什么意思啊?为什么不需要为num进行动态申请成员空间?
而在if(namep)中却要对name的成员进行动态空间的申请?
目前的理解:是不是因为num是一个字符数组在定义的时候已经对其进行了空间的分配,而name指针只用在使用的额时候才对其进行动态空间的分配,使用结束后立刻收回所分配的空间?
麻烦大家帮忙了