C++构造函数与析构函数

构造函数与析构函数

构造函数引入

在这里插入图片描述

在结构体中,数据成员默认是公有权限,而为了避免,其中一个初衷是数据隐藏;因此类中数据成员是私有的,程序不能直接访问数据成员,需要设计公有的成员函数来访问数据成员。为了避免用户再调用其他成员函数之前调用acquire(),采用创建对象之时自动对它进行初始化
----------类构造函数

构造函数特征

  • 函数名与类名相同
  • 无返回值
  • 支持重载
  • 实例化对象时编译器自动调用构造函数

声明和定义构造函数

```cpp
class Date
{
public:
	void SetDate(int year, int month, int day)
	{
	_year = year;
	_month = month;
	_day = day;
	}
private:
	int _year;
	int _month;
	int _day;
};

这里注意区分成员名和参数名构造函数的参数表示的不是类成员,而是赋给成员的值,因此参数名不能与成员名同名;通常做法是在数据成员名加前缀或者后缀

默认构造函数

默认构造函数是在未提供显式初始值时,用来创建对象的构造函数;当且仅当没有定义任何构造函数时,编译器才会提供默认构造函数(仅有一个默认构造函数)

形式:

  • Stock(int n = 0,double pr = 0.0);;//为已有的构造函数的参数值提供默认值

  • Stock()
    {
    数据成员变量=初始值;
    } //无参构造函数

  • 程序员没写,编译器默认生成的构造函数(也被称为默认构造函数)

注意点:

  • 为类定义了构造函数后,必须为它提供默认构造函数。避免出现形如Stock stock1;这样创建对象带来的调用构造函数的错误。
  • 如果通过无参构造函数创建对象时,对象后面跟括号,否则就成了函数声明。形如:**Stock stock1();**被编译器当作返回值为Stock类型的stock1函数。

析构函数引入

与构造函数相反,析构函数完成清理工作;例如如果构造函数使用new来分配内存,则析构函数将使用delete来释放这些内存。(对象生命周期结束时,编译系统自动调用)

析构函数

形式:
~Stock()
{
//相关清理工作代码块
}

特征:

  • 无参数,无返回值;
  • 一个类只有一个析构函数。若未显示定义,系统自动生成默认的析构函数。

其他

  • 类的析构函数调用完全按照构造函数调用的相反顺序进行调用;
  • 全局对象先于局部对象进行构造;
  • 静态对象先于普通对象进行构造。
    在这里插入图片描述
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值