10-3 类的构造函数和析构函数

10.3类的构造函数和析构函数

10.3.1构造函数

介绍

在对象被构造一瞬间进行的操作函数,常用来初始化

创建

构造函数的名称与类名相同,无需声明类型(即无返回值),原型位于类声明的公共部分。

注意:类构造函数的参数不能是类成员,因为构造函数应该给类成员赋值,而不是直接接收类成员的值。

使用

方法1:显式的调用构造函数

Stock food=Stock("World Cabbage",250,2.5);

方法2:隐式的调用构造函数

Stock garment("funny",50,2.5);

使用new的方法:

Stock *pstock= new Stock("hello",18,19.0);

注:无法使用对象来调用函数,因为函数开始于对象构造时,此时对象还不存在。

默认构造函数

如果调用者直接创建变量而不使用构造函数,则会自动调用默认构造函数。c++会在没有创建构造函数时自动补上默认构造函数,但一旦有了构造函数,则默认构造函数需要手动补齐。

创建方法有

1.给构造函数参数全部附上默认值

2.使用函数重载再定义一个默认构造函数

注意:默认构造函数只能有一个,所以不能同时使用这两种方法

Stock gooden;//隐式的调用了默认构造函数,注意没有()

10.3.2析构函数

介绍

对象过期时,程序会自动调用一个特殊的成员函数——析构函数。一般没啥用,但如果对象以new创建,则可以在析构函数中自动写入delete来释放。

创建

析构函数的名称是类名前加~,无需声明类型,也没有参数,原型位于类声明的公共部分。

Stock::~Stock()
{

}
默认析构函数

如果调用者直接创建变量而不使用析构函数,则会自动调用默认构造函数。c++会在没有创建析构函数时自动补上默认析构函数。