c++知识

来源:互联网 发布:基金数据下载 编辑:程序博客网 时间:2024/05/22 15:05

一、构造函数的引入
数据成员的初始化
类的数据成员不能在类定义时初始化
公有数据成员可以在定义对象时初始化
用成员函数初始化
C++提供了构造函数来处理对象的数据成员的初始化
二、带参数的构造函数
不带参数的构造函数使该类的每一个对象得到同一组初值
带参数的构造函数可以给不同的对象赋以不同的初值
构造函数的一般格式
构造函数名(类型1 形参1,类型2 形参2 ,…)
类名 对象名(实参1,实参2,…)
三、构造函数的重载
建立对象时选用无参构造函数,定义方法
Box box1;
尽管在一个类中可以包含多个构造函数,但是对于每一个对象来说,建立对象时只执行其中一个构造函数,并非每个构造函数都执行
四、使用默认参数的构造函数
应该在声明构造函数时指定默认参数
声明构造函数时,形参名可以省略
如果构造函数的全部参数都指定了默认参数,则在定义对象时可以给一个或几个实参,也可以不给实参
不指定实参,相当于所有参数都使用默认值,因此,也可以称为默认构造函数
因为一个类只能有一个默认构造函数,因此不能同时再声明无参的默认构造函数
Box()
五、使用默认参数的构造函数
在一个类中定义了全部是默认参数的构造函数后,不能再定义重载构造函数
如果构造函数中的参数并非全部默认时,要分析具体情况
一般构造函数的重载和有默认参数的构造函数不同时使用
六、析构函数
析构函数也是一个特殊的成员函数,它的作用与构造函数相反,它的名字是类名前加位取反运算符”~”
析构函数不返回任何值,没有函数类型,也没有函数参数
由于没有函数参数,因此它不能被重载,一个类可以有多个构造函数,但只能有一个析构函数
只要对象的生命周期结束,程序会自动执行析构函数
析构函数的作用不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作,使这部分内存可以被程序分配给新对象使用
析构函数可以完成设计者所指定的任何操作
如果用户没有定义析构函数,C++编译系统会自动生成一个析构函数,但这个析构函数只是有析构函数的名称和形式,实际上什么操作都不执行
下列情况下,程序执行析构函数
函数中的自动局部对象,在函数调用结束时,对象应该释放,在对象释放前自动执行析构函数
函数中的static局部对象, 在函数调用结束时不释放对象,因此也不调用析构函数,只有在main函数结束或exit函数结束程序时,才调用static局部对象的析构函数
如果定义了一个全局对象,则在程序流程离开其作用域时,调用该全局对象的析构函数
如果用new运算符动态地建立了一个对象,当用delete运算符释放该对象时,先调用该对象的析构函数

0 0
原创粉丝点击