c++11 delete禁用函数
2024-10-19 02:17:26
c++11添加了delete关键字。
不想用那个函数,在那个函数后面加 = delete就可以了;
比如:
在函数重载中,可用 delete 来滤掉一些函数的形参类型,如下:
bool IsLucky(int number); // original function
bool IsLucky(char) = delete; // reject chars
bool IsLucky(bool) = delete; // reject bools
bool IsLucky(double) = delete; // reject doubles and floats
上述功能看似没啥作用,都delete为啥还要写。
但是,因为c++对每个类都会默认生出6个函数。有时间后我们不想我们的类被拷贝或赋值。我们可以把拷贝构造函数,重载赋值函数定义为私有。
但是定义成私有,类内部还是可以拷贝,赋值。 我想要无论如何都不能调用拷贝、赋值怎么办。
当然是用delete一下啦。
以下是测试代码:
#include <iostream> 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 ;
}
上述代码可以看出,delete 函数后面,就把这个函数完全消失掉了。继承也木有用了。
最新文章
- mysql 之基本操作
- 【BZOJ】1135: [POI2009]Lyz
- css2----清除浮动
- ural 1289. One Way Ticket
- ServletRequest接口召回总结
- XTEA加密算法
- [刷题]算法竞赛入门经典(第2版) 6-7/UVa804 - Petri Net Simulation
- 【原创】1、简单理解微信小程序
- ASP.Net:Javascript 通过PageMethods 调用后端WebMethod方法 + 多线程数据处理 示例
- sort方法实际应用详解---javascript中对一个对象数组按照对象某个属性进行排序
- 详解卷积神经网络(CNN)
- POJ-2533.Longest Ordered Subsequence (LIS模版题)
- 九度OJ 1067 n的阶乘 (模拟)
- js实现手机摇一摇
- spring cloud 之 Eureka 知识点
- react.js插件开发,x-dailog弹窗浮层组件
- UVA 816 Abbott&#39;s Revenge 紫书
- node项目设置环境变量
- JVM内存管理之GC简介
- python 和pycharm 安装
热门文章
- tushare使用
- org.in2bits.MyXls.XlsDocument 生成excel文件 ; 如果想读取模板再另外生成的话,试试 NPOI
- Linux 文件类型及操作
- perl 截取 fastq文件
- 超炫酷的jQuery/HTML5应用效果及源码
- OCA,OCP,OCM傻傻分不清?
- Oracle 10.2.0.1 精简客户端配置
- 微信小程序省市区选择器对接数据库
- Android 布局学习之——Layout(布局)详解一
- Lua中用Split函数分割字符串