首页 > 编程 > C++ > 正文

c++知识

2019-11-10 23:19:02
字体:
来源:转载
供稿:网友

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选