全国计算机二级C++考试复习知识点(三)
树图思维导图提供 全国计算机二级C++考试复习知识点(三) 在线思维导图免费制作,点击“编辑”按钮,可对 全国计算机二级C++考试复习知识点(三) 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:37914dbc17c083c409d342b479987cf9
全国计算机二级C++考试复习知识点(三)思维导图模板大纲
当一个类的对象离开作用域时,析构函数将被调用(系统自动调用)
析构函数的名字和类名一样,不过要在前面加上 ~
对一个类来说,只能允许一个析构函数,析构函数不能有参数,并且也没有返回值
析构函数的作用是完成一个清理工作,如释放从堆中分配的内存
转换构造函数
当一个构造函数仅有一个参数,且该参数是不同于该类的一个数据类型,这样的构造函数就叫转换构造函数
转换构造函数把别的数据类型的对象转换为该类的一个对象
成员转换函数把该类的对象转换为其他数据类型的对象
在成员转换函数的声明中要用到关键字operator
operator aaa();
aaa就是要转换成的数据类型的说明符
这里的类型说明符可以是任何合法的C++类型,包括其他的类
C++里调用转换函数有三种形式
第一种是隐式转换
编译器需要一个Date对象,而程序提供的是CustomDate对象,编译器会自动调用合适的转换函数
两种都是需要在程序代码中明确给出的显式转换
C++强制类型转换是一种,还有一种是显式调用转换构造函数和成员转换函数
转换发生的情形
参数传递
初始化
返回值
表达式语句
在表达式内部,如果发现某个类型和需要的不一致,就会发生错误
下面的程序是把Date对象转换成长整型值
#include iostream.h class Date { int mo, da, yr; public: Date(int m,int d,int y) { mo=m; da=d; yr=y; }
operator long(); }; Date::operator long() { static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31}; long days=yr; days*=365; days+=(yr-1900)/4; //从1900年1月1日开始计算 for(int i=0;i days+=da; return days; }
int main() { Date today(12,24,2003); const long ott=123; long sum=ott+today; cout< return 0; }
当需要转换的对象可以转换成某个数字类型,或者表达式调用了作用于某个类的重载运算符时,就会发生隐式转换
树图思维导图提供 904名中国成年人第三磨牙相关知识、态度、行为和病史的横断面调查 在线思维导图免费制作,点击“编辑”按钮,可对 904名中国成年人第三磨牙相关知识、态度、行为和病史的横断面调查 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:10b9a8a2dd2fb4593f8130ef16c320fc
树图思维导图提供 Linux 网络基础知识 在线思维导图免费制作,点击“编辑”按钮,可对 Linux 网络基础知识 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:199680f0e48eac8a1aeaadb90447d4f4