当前位置: 首页 > news >正文

c++ 11 =delete

 =delete 则是C++11引入的一种新特性,用于删除特定的函数,包括构造函数、析构函数、拷贝构造函数、赋值运算符等。通过将函数声明为 =delete,可以显式地阻止该函数被调用,即使在类内部或者友元函数中也无法使用。

使用 =delete 的场景:

防止拷贝和赋值

class NoCopy {
public:NoCopy() = default;NoCopy(const NoCopy&) = delete;             // 删除拷贝构造函数NoCopy& operator=(const NoCopy&) = delete;  // 删除赋值运算符
};

上面的例子中,通过删除拷贝构造函数和赋值运算符,可以防止该类的对象被复制或者赋值。

禁止特定参数类型的构造

class NoInt {
public:NoInt() = default;NoInt(int) = delete;  // 删除接受 int 参数的构造函数
};

删除默认构造函数

class NoDefault {
public:NoDefault() = delete;  // 删除默认构造函数NoDefault(int value) : data(value) {}
private:int data;
};

在某些类中,可能希望禁止默认构造函数的生成,而只允许带参数的构造函数。

相关文章:

  • 数据结构(面试)
  • Java:类和对象
  • c++网络编程实战——开发基于协议的文件传输模块(一)如何实现一个简单的tcp长连接
  • vulnhub靶机:Tomato
  • 【Spring】详细了解静态代理和动态代理的使用
  • Android读取拨号记录功能
  • 【九】Hadoop3.3.4HA高可用配置
  • Vue3 + js-echarts 实现前端大屏可视化
  • java计算机毕设课设—网上招聘系统(附源码、文章、相关截图、部署视频)
  • 扩展------零拷贝技术(Mmap,SendFile)
  • 统计语言模型——Ngram
  • SpringMVC 工作流程简述
  • 2024年华数杯数学建模竞赛——赛题浅析
  • FFmpeg实现文件夹多视频合并
  • 使用Python创建多功能文件管理器
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • Debian下无root权限使用Python访问Oracle
  • GraphQL学习过程应该是这样的
  • java正则表式的使用
  • js中的正则表达式入门
  • linux安装openssl、swoole等扩展的具体步骤
  • PHP面试之三:MySQL数据库
  • rabbitmq延迟消息示例
  • React+TypeScript入门
  • Spark学习笔记之相关记录
  • SpingCloudBus整合RabbitMQ
  • spring-boot List转Page
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 入门级的git使用指北
  • 使用 QuickBI 搭建酷炫可视化分析
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 我这样减少了26.5M Java内存!
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • elasticsearch-head插件安装
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #### golang中【堆】的使用及底层 ####
  • $GOPATH/go.mod exists but should not goland
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (TOJ2804)Even? Odd?
  • (排序详解之 堆排序)
  • (一)SpringBoot3---尚硅谷总结
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • .equals()到底是什么意思?
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .Net 基于MiniExcel的导入功能接口示例
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .Net 知识杂记
  • .NetCore部署微服务(二)
  • .NET之C#编程:懒汉模式的终结,单例模式的正确打开方式
  • .NET中使用Protobuffer 实现序列化和反序列化
  • :中兴通讯为何成功