C++构造函数和析构函数总结

构造函数是一类特殊的类成员函数,在创建对象时调用,构造函数的名称和类名相同,但通过函数重载,可创建多个同名的构造函数,前提是每个函数的特征标(也就是参数列表)都不一样,而且,构造函数通常没有声明类型,因此,构造函数通常用于初始化类对象的成员,初始化应该与构造函数的参数列表匹配,举个例子:

Bozo(const char * fname, const char * lname);//constructor prototype ,假设一个Bozo类的构造函数原型

则可以使用它来创建初始化对象:

Bozo bozetta = Bozo("Bozetta", "Biggens");//primary form
Bozo fufu("FuFu", "0'Dweeb");//short form
Bozo *pc = new Bozo("Popo", "Le Peu");//dynamic object

如果编译器支持C++11,则可以使用列表初始化:

Bozo  bozetta = {"Bozetta", "Biggens"};
Bozo fufu{"FuFu", "0'Dweeb"};

如果构造函数只有一个参数,则将对象初始化为一个参数的类型相同的值时,该构造函数将被调用,例如,假如有一个构造函数原型:

cout << trip;

则可以使用下面的任何一种形式来初始化对象:

Bozo dribble = bozo(4);//primary form 
Bozo roon(66);//secondary form 
Bozo  tubby = 32;//special form for one-argument constructors

不过其实,这第三个式演示式新内容,在后面会详细介绍一种关闭这种特性的方式,因为它可能会造成一些不必要的麻烦。
(注意:接受一个参数的构造函数允许使用赋值语法将对象初始化为一个值)

默认构造函数式是没有参数的,因此如果创建对象时没有显式的初始化,则将调用默认构造函数,如果程序中没有提供任何构造函数,则编译器会为程序提供一个默认构造函数;否则,必须自己提供默认函数。

Bozo();
Bistro(const char * s = "Chez Zero");

如果构造函数使用了new,则必须提供使用delete的析构函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值