构造函数

对象的初始化和清理
构造函数和析构函数,这两个函数会被编译器自动调用,完成对象初始化和清理工作。
构造函数:主要作用在于创造对象时为对象的成员赋值,构造函数有编译器自动调用,无须手动调用。
析构函数:主要作用在于对象销毁前系统自动调用,执行一些清理工作。

构造函数语法:类名(){}
1.没有返回值也不写void
2.函数名称与类名相同
3.构造函数可以有参数,因此可以发生重载
4.程序在调用对象时候会自动调用,无须手动调用,只调用一次

析构函数语法:~类名(){}
1.析构函数,没有返回值也不写void
2.函数名称与类名相同,在名称前面加符号~
3.析构函数不可以有参数值,因此不可以发生重载
4.程序在对象销毁前会自动调用析构,无需手动调用,只调用一次

构造函数的分类和调用
两种分类:
按参数分为:有参构造和无参构造
按类型分为:普通构造和拷贝构造
三种调用方式:
括号法
显示法
隐式转换法


```cpp
#include<iostream>
#include<string>
using namespace std;
class person
{
public:
	person()
	{
		cout << "默认构造函数" << endl;
	}
	person(int a)
	{
		age = a;
		cout << "参数构造函数" << endl;
	}
	//拷贝构造函数
	//将传入的人身上的所有属性,拷贝到我身上
	person(const person& p)
	{
		cout << "调用拷贝函数" << endl;
		age = p.age;
	}
	~person()
	{
		cout << "调用析构函数" << endl;
	}

	void set_name()
	{
		string name;
		cout << "输入名字: " << endl;
		getline(cin, name);
		cout << "输入年龄: " << endl;
		cin >> age;
	}
	void show()
	{
		cout << name << " : " << age << endl;
	}
private:
	string name="xiaoming";
	int age=1;
 };
void test()
{
	//调用默认构造函数时,不用加()
	person p1;//调用无参构造函数
	person p2(10);//调用有参构造函数
	person p3(p2);
	//显示法,调用
	person p4 = person(40);
	person p5 = person(p4);
	person(50);
	cout << "检测person(50),会不会杯系统立即回收" << endl;
	p1.show();
	p2.show();
	p3.show();
	p4.show();
	p5.show();
}
int main()
{
	//person p;
	test();
	//p.set_name();

	//system("pause");
	return 0;
}

输出结果:

默认构造函数
参数构造函数
调用拷贝函数
参数构造函数
调用拷贝函数
参数构造函数
调用析构函数
检测person(50),会不会杯系统立即回收
xiaoming : 1
xiaoming : 10
xiaoming : 10
xiaoming : 40
xiaoming : 40
调用析构函数
调用析构函数
调用析构函数
调用析构函数
调用析构函数

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值