【无标题】

动态申请空间和删除

class Student
{public:
	Student(char* nump, char* namep, int score)//字符串数组,用指针
	{
		if (nump) strcpy(Num, nump);
		else strcpy(Num, " ");//赋值为空串,不是空指针
		if (namep)
		{
			Name = new char[strlen(namep) + 1];
			strcpy(Name, namep);
		}
		else Name = NULL;//赋值为空指针,不是空串
		Score = score;
	}
	void Show()
	{
		cout<<Num<<'\t'<<Name<<'\t'<<Score;
	}
	~Student()
	{
		if(Name) delete[]Name;//释放申请的空间 
	}

private:
	char Num[10];//有串空间
	char* Name;//没有串空间
	int Score;
};
int main()
{
	Student a("210300", "suxin", 99);
	a.Show();
	return 0;
}

1.有串空间,若输入值为0.是一个空字符串; 没有串空间,是一个NULL指针。

2.系统会先执行析构函数,再去进行撤销空间。

Name = new char[strlen(namep) + 1];

if(Name) delete[ ]Name;

记住这两个的书写方法

3.看一看缺省构造函数:类内声明,类外定义

 4.什么时候要用拷贝构造函数?

如果不用的话,系统是可以自动生成的,但是拷贝出来得东西占用同一个空间,在有动态申请空间时,析构函数释放的过程中,该空间释放一次后,无法进行第二次释放,导致程序出错。当静态空间,就不会出现这个问题。

 

就是这样的区别。

 

####

 

第二种be like 

 

 5.

 c,有两个构造函数和一个析构函数,构造函数包括一个无参缺省构造函数和一个拷贝构造函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值