析构函数

当对象消亡或者使用delete的时候,会调用析构函数
说明:
1)析构函数没有返回值
2)析构函数不能用private修饰
3)析构函数函数名与类名一致,其前加上~符号与构造进行区别. eg: ~Human();
4)析构函数没有形参
5)修构函数不需要人为调用(普通形式自动调用 指针形式需要delete调用)
6)一般用在构造函数有申请资源动作,那么实现析构函数对其资源释放.

#include <iostream>
#include <stdlib.h>
#include <unistd.h>
using namespace std;


class Human
{	
	char * name;
	int age;

public:
	Human(char *name, int age); //构造函数:完成对象的初始化
	~Human(); //析构函数名称固定,和类名一样,前面多了一个'~'
			  //构造函数是没有返回值的
			  //析构函数只能是public的权限
	//~Human(char *name, int age); //析构函数是不可以重载且不能有参数的
	void get_info();
};

/*
Human::Human(char *h_name, int h_age){
	cout << "构造函数" << endl;
	name = h_name;
	age = h_age;
}
*/

//构造函数快速赋值   函数:成员名(参数名)
Human::Human(char *h_name, int h_age):name(h_name),age(h_age){
	cout << "构造函数" << endl;
}

void Human::get_info(){
	cout << "name: " << name << " age: " << age << endl;
}

Human::~Human(){
	name = (char *)"Peter";
	age = 10;
	cout << "析构函数" << endl;
}

int main(int argc, char const *argv[])
{
	
	Human human1((char *)"Tom", 25);
	sleep(1);

	Human *human2 = new Human((char *) "Tom", 25);
	delete human2;

	//human1.Human((char *)"Peter", 10); //构造函数是不可以手动调用的
	human1.get_info();
	human1.~Human(); //析构函数可以手动调用,但是不需要手动调用的
	human1.get_info();

	return 0;
}


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值