

免费预览已结束,剩余2页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
个人收集整理-ZQC的默认函数与default和delete用法中的默认函数与和用法一、 类中的默认函数.类中默认的成员函数.默认构造函数.默认析构函数.拷贝构造函数.拷贝赋值函数.移动构造函数.移动拷贝函数.类中自定义的操作符函数* 同时规定,一旦程序员实现了这些函数的自定义版本,则编译器不会再自动生产默认版本。注意只是不自动生成默认版本,当然还是可手动生成默认版本的。当我们自己定义了待参数的构造函数时,我们最好是声明不带参数的版本以完成无参的变量初始化,此时编译是不会再自动提供默认的无参版本了。我们可以通过使用关键字来控制默认构造函数的生成,显式地指示编译器生成该函数的默认版本。比如:b5E2R。b5E2R。:(); 同时提供默认版本和带参版本,类型是的()(): ;有些时候我们希望限制默认函数的生成。典型的是禁止使用拷贝构造函数,以往的做法是将拷贝构造函数声明为的并不提供实现,这样当拷贝构造对象时编译不能通过,则使用关键字显式指示编译器不生成函数的默认版本。比如:p1Ean。p1Ean。:();( ); .当然,一旦函数被过了,那么重载该函数也是非法的,该函数我们习惯上称为删除函数。二、和的其他用途上面我们已经看到在类中我们可用和修饰成员函数,使之成为缺省函数或者删除函数,在类的外面,可以在类定义之外修饰成员函数,比如:DXDiT。DXDiT。:();() ( ););在类的定义外用来指明缺省函数版本 ( );还可以 ( );但是这种类外定义合成的成员就不是内联函数。与 不同,必须出现在函数的第一次声明中。因为一个默认的成员只影响为这个成员生成的代码,因此 直到编译生成代码时才需要,而编译器必须早早知道一个函数是否是删除的,以便禁止试图使用它的操作。RTCrp。RTCrp。一般情况下,析构函数不能定义为删除的,因为如果析构函数被删除,就无法删除此类型的对象了。对于一个删除了析构函数的类型,编译器将不允许定义该类型的变量或创建该类型的临时对象,而且如果一个类有某个成员的类型删除了析构函数,也不能定义该类的变量或临时对象,因为一个成员的析构函数是删除的,则该成员无法销毁,包含它的类也就没法销毁。虽然对于删除了析构函数的类型,我们不能定义这种类型的变量或成员但可以动态分配这种类型的对象,比如:5PCzV。5PCzV。();(); * ()正确,但是我能 但是有时析构函数也是可以的,这样做的目的是我们在指定内存位置进行内存分配时并不需要析构函数来完成对象级别的清理,这时我们可显示删除析构函数来限制自定义类型在栈上或者静态的构造。jLBHr。jLBHr。关于的显式删除,并非局限于成员函数,比如:(); ( ); 显式删除版本 ()();(); 无法编译通过 ;这里因为的版本已经被删除,故()会编译失败。由此我们也知是只局限作用于类的部分成员函数的。于是我们还可用来避免不必要的隐式数据类型转换。比如:xHAQX。xHAQX。:();( ); 删除版本的构造函数; ( ) ()();(); 编译不能通过(); (); 编译不能通过这是因为版本的构造函数被删除后,试图从构造对象的方式是不允许的了。但去掉这句的函数删除后,编译器会隐式的将转换为整型使得编译通过,调用的是整型构造函数,这可能并不是你所想要的。LDAYt。LDAYt。但是如果这样::(); ( ); 删除的版本的构造函数; ( ) ()();(); 编译可通过(); (); 编译不能通过将构造函数后,构造函数一样的还是不能发生的构造,因为构造版本被删除了,但在的调用中,编译器会尝试将转换为,即()会调用一次( )构造,顺利通过编译。于是我们不提倡和混用。对与普通函数也有类型的效果。Zzz6Z。Zzz6Z。的用法还包括删除 操作符,编码在堆上分配该类的对象如:* ();合成的拷贝控制成员可能是删除的,如果一个类有数据成员不能默认构造、拷贝、复制或销毁,则对应的成员函数将被定义为删除的。因此:dvzfv。dvzfv。如果类的某个成员的析构函数是删除的或不可访问的,那么类的合成析构函数被定义为删除的。如果类的某个成员的拷贝构造函数是删除的或不可访问的,则类的合成拷贝构造函数也被定义为删除的。如果类的某个成员的拷贝赋值运算符是删除的或不可访问的,或是类有一个的或引用成员,则类的合成拷贝赋值运算符被定义为删除的。rqyn1。rqyn1。如果类的某个成员的析构函数是删除的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 果菜种植品种改良分析报告
- 建筑机械操作模拟器性能评估报告
- 水利工程质量问题整改报告及指导
- 高三数学复习计划及重点内容
- 2024年二年级品社下册《为小区服务的人》说课稿 沪教版
- 2026安全生产法考试题及答案
- 民法继承权考试题及答案
- 木寨门施工方案设计
- 建筑防火规范与应用实务
- 6.1碳单质的多样性(第2课时 碳单质的化学性质)说课稿-2024-2025学年九年级化学人教版(2024)上册
- 教学第七章-无机材料的介电性能课件
- 应急值班值守管理制度
- 外国文学史-总课件
- 《中小企业划型标准规定》补充说明
- 房屋租赁信息登记表
- 六年级上册数学课件-1.6 长方体和正方体的体积计算丨苏教版 (共15张PPT)
- 食品科学技术词汇
- 质量总监.安全生产责任制考核表
- 小学生汉字听写大赛题库
- 第一框 关爱他人
- 渗透检测培训教材(1)
评论
0/150
提交评论