c++ 独一无二的不可拷贝拷贝对象

2023-11-15

方法一:

将类的拷贝构造函数和赋值函数只声明,不定义,并定义为 private

class A{

private:
	friend void copy_one();    
    A(const Uncopyable&) ;
    A& operator=(const Uncopyable&) ;

};

void copy_one(){
A a
A b = a
}

缺点: 1. 友元 和 类内函数可以访问, 且会导致链接期错误,所以作为类的设计务必小心谨慎

更优的方法:
class Uncopyable{
protected:

    // 因为在默认情况下只会帮忙合成一个默认构造函数,
    当定义拷贝构造函数为delete		   的时候,导致该类无法构造, 
    从而导致派生类不可构造
    Uncopyable(){}
private:
    Uncopyable(const Uncopyable&) ;
    Uncopyable& operator=(const Uncopyable&) ;
};

class A: private Uncopyable{
public:
int a;
int b;
};

这样A的每一个对象将会成为独一无二的,且错误将会在静态编译期就暴露

	int main(){
		A a; //  基类的默认构造函数必不可少
		A b  = a;
	}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++ 独一无二的不可拷贝拷贝对象 的相关文章

  • python多线程_Python多线程爬虫,效率真的高

    有些时候 比如下载图片 因为下载图片是一个耗时的操作 如果采用之前那种同步的方式下载 那效率肯会特别慢 这时候我们就可以考虑使用多线程的方式来下载图片 多线程介绍 多线程是为了同步完成多项任务 通过提高资源使用效率来提高系统的效率 线程是在
  • PAT 乙级 1033 旧键盘打字 python

    题目 思路 因为坏键盘的输入是大写字母 遍历输入的字符 将输入字母的字符转换为大写 与坏键盘对比 如果 坏掉 当字母字符不在坏键盘之列 则是小写时 字符才能输出 代码 import sys bad key sys stdin readlin
  • Python语言实现批量视频分帧,保存视频帧

    本篇博客介绍利用python脚本实现视频分帧 并将每一帧保存到本地 主要基于opencv包来实现 在运行代码前确保opencv包已正确安装 下面是主要代码 import os import cv2 videos src path home
  • 大模型落地金融业,想象力在哪?

    金融大模型的难点在于 能否在产业中扎得更深 其颠覆性也更建立在 纵深到产业中去 赋能金融行业的长尾场景发展 以及重拾 金融信任 作者 思杭 编辑 皮爷 出品 产业家 从经济角度讲 整个金融业的数字化进程并非匀速 从技术角度讲 催化剂的出现会
  • TypeError: parse() got an unexpected keyword argument 'transport_encoding'

    import cv2时发现没有这个包 然后就安装一下 结果发现安装时出错了 错误如下 注 我是在pycharm里面配的anaconda 然后利用anaconda安装cv2 发现pip版本太低 我的是9 0 1 新的已经是10 0 1 于是就
  • STM32单片机学习记录3——GPIO(上)输出模式之点亮LED灯

    1 硬件准备 我使用的是市面上常见的黑色开发板 烧入器使用的是正点原子的无线烧入器 普通的烧入器也行 这个无所谓 开发板的原理图我放在下面链接里 我们需要知道相应的LED引脚 2 预期功能 通过函数实现LED灯的闪烁 这里直接采用模块化编程
  • EasyExcel简单使用

    EasyExcel简单使用 EasyExcel是阿里开源的一个Excel处理工具 官网这么介绍 EasyExcel是一个基于Java的 快速 简洁 解决大文件内存溢出的Excel处理工具 他能让你在不用考虑性能 内存的等因素的情况下 快速完
  • 存在重复元素

    存在重复元素 力扣 LeetCode 给定一个整数数组 判断是否存在重复元素 如果存在一值在数组中出现至少两次 函数返回 true 如果数组中每个元素都不相同 则返回 false 示例 1 输入 1 2 3 1 输出 true 示例 2 输
  • 什么是iiot全称

    iiot的全称是Industrial Internet of Things 翻译成中文便是工业物联网 它是指工业生产中各种设备 不论是工厂里的机器设备或者汽车飞机上的发动机 在这些设备上装置传感器 连接到无线网络终端以收集和共享数据 随着传
  • python3:Python 异常处理以及with 语句的使用

    try except else 语句 是处理异常公式 try 是有可能抛异常的代码块 except 抓取异常的类型 else 是指当没有抓到抛错 就运行这块代码 请看下下边的例子 try print 抓取的有可能的代码块 raise IOE
  • 静态变量与动态变量的定义与区别

    动态变量和静态变量的定义和区别如下 1 定义上 静态变量比动态变量在多一个关键字static 比如 动态变量 int i 静态变量 static int i 2 动态变量在子程序中 每次调用都会从它的初始值开始调用 而不管他在函数中经历了什
  • 淘宝UED招聘题(前端开发部分含参考答案和面试官评语)

    题目1 JavaScript方面小贤是一条可爱的小狗 Dog 它的叫声很好听 wow 每次看到主人的时候就会乖乖叫一声 yelp 从这段描述可以得到以下对象 function Dog this wow function alert Wow
  • 解读 B 站跨平台播放器 IJKPlayer 的前世今生

    转自 https www bilibili com read cv3901523 B站开源IJKPlayer 的过程 很不错 但是不能复制 最近几年 伴随着开发人员对移动端的跨平台需要 B 站自研的 IJKPlayer 应运而生 它是一款基
  • 几个比较好的app开发框架

    学习路线 一 Dcloud 特点 云编译必须联网获取AppId 优点 国内厂商 中文文档 对HTML5的性能 工具 能力都做了深入扩展 提供 IDE 云服务等帮助节省时间 MUI 更贴近国内App使用习惯 提供模块的详细例子 如登录 个人中
  • 学习笔记 JavaScript ES6 异步编程Grenerator用法

    Grenerator的语法和普通的函数是完全不同的 Grenerator在执行时可以暂停 然后可以在暂停的位置继续执行 就是一步一步的执行 不能做为构造函数使用 只能返回一个生成器对象 Grenerator函数的特点是function后面有
  • java 规则二维数组所有打印方式

    import java util public class HelloWorld public static void main String args int array 1 2 3 4 5 6 for循环知道行数列数的情况 for in
  • Go新手速成-string

    1string类型 byte就是unit8 rune就是int32 都可以代表字符型 但是必须格式化打印 要不然打印出来就是ASC码 参考c语言 字符处理的细节 如果是英文意味着比较短 可以用byte来实现 如果是汉字就可以用32位的run
  • AOF详解

    AOF 命令同步 同步命令到 AOF 文件的整个过程可以分为三个阶段 1 命令传播 Redis 将执行完的命令 命令的参数 命令的参数个数等信息发送到 AOF 程序中 2 缓存追加 AOF 程序根据接收到的命令数据 将命令转换为网络通讯协议
  • @JsonFormat和@DateTimeFormat 实践测试

    JsonFormat 出参 DateTimeFormate 入参 http www iteye com problems 53816 DateTimeFormat pattern yyyy MM dd HH mm ss Date timel

随机推荐

  • 基于AT89C51的数字时钟课程设计

    摘要 单片微型计算机简称单片机 又称为微控制器 是将CPU RAM ROM 定时 计数器 I O接口电路集成到一块电路芯片上构成的微型计算机 本次设计的系统由单片机系统 数码管显示系统 键盘 蜂鸣器等组成 通过按键来控制单片机实现数字时钟的
  • clearTaskOnLaunch

    作用 就是程序回到home界面后 再次点击程序图标的效果 影响的是activity的生命周期 简单的 activity A clearTaskOnLaunch设置为true 为主界面 activity B 程序启动A 在启动B 再点击HOM
  • java基础语法之学习武林秘籍入门版(由助手完成)

    在这本武侠版本的 Java 入门教程中 我们将会以一个武侠世界为背景来学习 Java 语言的基础知识 我们会介绍如何安装和配置 Java 开发环境 然后通过实例来学习 Java 的基础语法 包括变量 数据类型 运算符 控制流 数组 方法和类
  • Python异常知识讲解

    合适 基础入门 前 这个是最近的一个任务 做好了 所以也放一篇到博客上吧 就是代码我用图片的形式放出来了 不过妨碍学习哈 也不是特别完善 1 理解异常的概念 2 掌握处理异常的几种方式 3 掌握raise和assert语句 会抛出自定义的异
  • ubuntu下修改yaffs2文件系统镜像文件

    原地址 http www tjworld net wiki Linux Kernel SimulateNandMtdDevice 对原博客的修改 将写mtd设备命令 sudo dd if system img of dev mtdblock
  • Qt之使用QPainter自绘实现窗口阴影边框

    一 简述 今天要说的是如何通过自绘的方式实现窗口的阴影边框 在之前的文章里Qt之使用QGraphicsDropShadowEffect添加窗口边框以及文字阴影效果 讲述到使用Qt的 QGraphicsDropShadowEffect类给窗口
  • Java的垃圾回收机制(GC)(无废话版)

    如果无产阶级不能发出自己的声音 他们就会被社会遗忘 Java垃圾回收机制 GC Java程序会主动释放内存空间 这是因为Java虚拟机有一套比较完善的垃圾回收机制又叫GC garbage collection 机制 1 什么是垃圾 简单来讲
  • 深度:从零编写一个微前端框架

    写在开头 手写框架体系文章 缺手写vue和微前端框架文章 今日补上微前端框架 觉得写得不错 记得点个关注 在看 转发更好 对源码有兴趣的 可以看我之前的系列手写源码文章 微前端框架是怎么导入加载子应用的 3000字精读 原创 带你从零看清N
  • Unity Recorder的使用讲解

    Unity Recorder的使用讲解 使用目的 插件下载 插件位置 窗口基本介绍 基本设置选项 录制列表 Animation Clip 参数讲解 Movie 电影模式 参数介绍 Source GameView Targeted Camer
  • APP+springboot订餐APP 毕业设计-附源码190711

    摘 要 随着现在网络的快速发展 网络的应用在各行各业当中它很快融入到了许多学校的眼球之中 他们利用网络来做这个职位推荐的网站 随之就产生了 订餐app 这样就让用户订餐app更加方便简单 对于本订餐app的设计来说 它主要是采用后台采用ja
  • /proc/sys/kernel/printk

    proc sys kernel printk 首先 printk有8个loglevel 定义在
  • telnet远程登录实验配置(Telnet认证有两种模式:AAA模式,密码模式。)

    目录 telnet远程登录 Telnet认证有两种模式 AAA模式 密码模式 password认证模式 AAA认证模式 三 FTP文件传输协议配置 telnet远程登录 Telnet认证有两种模式 AAA模式 密码模式 password认证
  • Node.js 高级篇(三):Mongoose 增删改查

    文章目录 一 mongoose 介绍 Mongoose 有两个特点 二 mongoose 的安装以及使用 2 1 安装 2 2 引入mongoose并连接数据库 2 3 定义Schema 2 4 创建数据模型 2 5 增 2 6 删 2 7
  • React性能分析工具 -React-Performace

    目录 介绍 用途 安装 插件安装 使用 注册观察者 1 安装微服务器
  • 避坑系列1 - 安装Ubuntu & Jenkins, 使用FinalShell

    2023年7月5日 我开始了实验室的工作 首先是要为主机安装Ubuntu 但仍然遇到了一些问题 我在想 今后会遇到许多错误 故障 在某些特定的情境下必然会遇到 比如 用rufus刷镜像时一定会遇到找不到设备的问题 我在网上找了一会才找到答案
  • 面试总结:html5的新特性(十大类)

    这里只以 根目录的方式来说明 详细的见如下连接 https www cnblogs com vicky1018 p 7705223 html 1 语义化标签 好处 1 使代码结构清晰 便于阅读2 便于SEO3 无障碍阅读4 便于后期的维护与
  • 下载多个ts文件,合并为一个mp4文件,并发送到微信

    1 使用internet download manager 来下载ts文件 2 使用tsMuxer来split ts文件 3 VLC media player convert ts to mp4 4 使用MP4Tools将两个ts文件合并
  • windows中的会话概念的总结

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 一 参考 http blog csdn net zacklin article details 7579217 以前我一直不理解Windo
  • (三)无人机数据处理算法介绍——目标识别一

    无人机目标识别技术 1 几个相近的概念 图像分割 目标识别 模式识别 目标跟踪 图像分割 根据图像的像素统计特征来对图像进行分割 使得不同类的的图像分开 目标识别 范围广一点 所有的检测目标方法 都可以叫做目标识别 模式识别 当我们采用特定
  • c++ 独一无二的不可拷贝拷贝对象

    方法一 将类的拷贝构造函数和赋值函数只声明 不定义 并定义为 private class A private friend void copy one A const Uncopyable A operator const Uncopyab