博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++11 delete禁用函数
阅读量:6948 次
发布时间:2019-06-27

本文共 792 字,大约阅读时间需要 2 分钟。

c++11添加了delete关键字。

不想用那个函数,在那个函数后面加 = delete就可以了;

比如:

在函数重载中,可用 delete 来滤掉一些函数的形参类型,如下:bool IsLucky(int number);        // original functionbool IsLucky(char) = delete;     // reject charsbool IsLucky(bool) = delete;     // reject boolsbool IsLucky(double) = delete;   // reject doubles and floats

上述功能看似没啥作用,都delete为啥还要写。

但是,因为c++对每个类都会默认生出6个函数。有时间后我们不想我们的类被拷贝或赋值。我们可以把拷贝构造函数,重载赋值函数定义为私有。

但是定义成私有,类内部还是可以拷贝,赋值。 我想要无论如何都不能调用拷贝、赋值怎么办。

当然是用delete一下啦。

以下是测试代码:

#include 
using namespace std;class Test {public: Test() { } Test(const Test&) = delete; Test& operator = (const Test&) = delete;};class Test1 : public Test{};int main(){ Test test; //Test t2 = test;//编译错误 Test1 t1; //Test1 t2 = t1;//编译错误 return 0;}

上述代码可以看出,delete 函数后面,就把这个函数完全消失掉了。继承也木有用了。

 

转载地址:http://yghnl.baihongyu.com/

你可能感兴趣的文章
域名解析
查看>>
通过SNMP获取接口速率 32位与64位的区别
查看>>
Windows上用gcc编译SQLite3
查看>>
bash位置参数的简介
查看>>
VirtualBox导入其他虚拟机后网络问题
查看>>
Weblogic修改密码口令验证策略
查看>>
js 正则通过class查找Tag内的内容。
查看>>
ZeroClipboard实现多个浏览器兼容的复制文本到剪贴板的功能
查看>>
动态SQL、绑定变量、静态SQL的性能对比
查看>>
还没学到的技术总不想先去偷窥,时机成熟才敢去解开神秘的面纱。
查看>>
因特尔:视网膜屏将于2013年到来
查看>>
VC删除注册表键值项
查看>>
Hadoop安装配置使用
查看>>
1.01 与 37.8
查看>>
微积分35--二重积分的计算
查看>>
java对象与字符串之间的序列化和反序列化
查看>>
人工智障 2 : 你看到的AI与智能无关
查看>>
Let's Encrypt 使用教程,免费的SSL证书,让你的网站拥抱 HTTPS
查看>>
.net 面试题系列四(附答案)
查看>>
sql server的并发性
查看>>