类和对象的初始化和清理(一)
一、构造函数和析构函数
对象的初始化和清理也是两个非常重要的问题,一个对象或者没有初始化对其使用后果都是未知的
同样的使用一个对象或变量,没有既是清理也会造成一定的安全问题
C++利用构造函数和析构函数解决上述问题。这两个函数将会被“编译器”自动调用,完成对象初始化和清理工作。对象的初始化和清理工作,对象的初始化和清理工作是编译器强制我们做的事,因此我们不提供构造函数和析构,编译器会提供编译器提供的构造函数和析构函数实现。
构造函数:主要作用在于创建对象时为对象成员属性赋值,构造函数由编译器自动调用无须手动调用
析构函数:主要作用在于对象销毁的系统,自动调用执行一些清理工作
构造函数语法:类名(){}
1.构造函数,没有返回值也不写void
2.函数名称与类名相同
3.构造函数可以有参数,因此可以发生重载
4.程序在调用时对象时候会自动调用无须手动调用而且只会调用一次
析构函数:~类名(){ }
1.析构函数没有返回值也不写void
2.函数名称与类名相同,在名称前可以加上符号
3.析构函数不可以有参数,因此不可以发生重载
4.程序在对象销毁前会自动调用析构函数,无须手动调用而且只会调用一次
二、构造函数的分类及调用
两种分类方式:按参数分为:有参构造和无参构造
: 普通构造和拷贝构造
三种调用方式:括号法 显示法 隐式转换法
调用默认构造函数时不需要用()
匿名对象,特点:当前执行结束后,系统会立即回收匿名对象
注意:不要利用拷贝构造函数初始化匿名对象,编译器会认为
Person(p3)=Person p3; 时对象声明