C++11中的默认函数控制

C++11允许你有选择性地使用或不使用默认的函数实现。这是通过default和delete实现的,比如说你想使用默认的构造函数的实现,你可以如下做:



它代表你想使用C++默认的构造函数代码,与之相反,看下图:



它代表你不想使用该函数,即,你不能使用拷贝赋值操作符了。
须知default只能用于编译器能自动生成代码的函数,这些函数很有限就那几个。比如说,构造函数、COPY构造函数、COPY赋值操作符等。

Delete则可以用于任何成员函数,它的作用是禁用某个函数,而不是删除某个函数。



如图所示,如果没有redo(int)的话,你向redo输入一个int实参,该实参会被自动转换成double从而调用redo(double)。但是当你使用delete禁用redo(int)时,你再重复同一操作,会出现错误,无可用函数。这是因为编译器知道能用的只有redo(int),但是它被禁用了,而压根不会去考虑redo(double)。这就防止了隐式类型转换。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,161评论 1 51
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,237评论 19 139
  • 接着上节 condition_varible ,本节主要介绍future的内容,练习代码地址。本文参考http:/...
    jorion阅读 14,996评论 1 5
  • 甘肃永登县境,有石屏山,内隐藏庙,称“尕哒寺”。山下有大通河,据说就是唐玄奘西天取经途中的通天河。虽时值盛夏,河水...
    龙生于海阅读 4,068评论 11 25
  • 今天,头发长了,来到理发店,看见坐满了等待剪头的人,没办法只有等到起了。 我坦白的说不是很喜欢剪头,原因是麻烦,然...
    牛德华12345阅读 1,711评论 0 0

友情链接更多精彩内容