【C++】类和对象--constructor和destructor

本文详细介绍了构造函数的概念及其在类实例化过程中的作用,包括默认构造函数、重载构造函数及拷贝构造函数的区别与应用场景,并解释了析构函数的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Constructor:人称构造函数,用来初始化class,在class内部或外部都可以定义,在实例化class的时候会被调用。

Constructor的写法一般会有:

1. 默认的构造函数,也就是实例化的时候不带任何变量就能调用的构造函数;(这种情况有可能是构造函数就没给默认值,也可能是给了固定的默认值)

2. 重载构造函数,在有或者没有默认构造函数的基础上,带有相关变量,用来初始化class。

如果有重载构造函数,在实例化的时候,会根据实例化带的参数,来选取调用的是哪个构造函数。

新建一个class时候,上面这两种构造函数必须得带有一种。

上面的程序运行结果为:

要注意:1. 默认构造函数和重载构造函数必须要有一个;要是使用重载构造函数,那么必须要带初始化的参数;class被初始化后,由于它的属性被定义为private,那么这些属性的值不能再被修改。

初始化列表的必要性:在数据成员是const时候,用构造函数是不能直接给成员赋值的,这时候只能用初始化列表来给成员赋值!

拷贝构造函数:

Student stu1;

Student stu2=stu1;

Student stu3(stu1);

后两种情况,实例化的时候,调用的构造函数就是拷贝构造函数,而不会调用类的构造函数。

通常我们不会在程序中写拷贝构造函数,那么系统会自动生成一个默认拷贝函数。

 

析构函数:

1. 自己不定义的话,系统会自动生成默认析构函数。

2. 在对象销毁时,会自动调用。

2. 在类中使用new申请堆内存的情况下,必须写析构函数,用delete来销毁申请的内存,否则会造成内存泄漏。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值