default & delete
一、使用“=default”
1. 显式生成拷贝控制成员的合成版本
class A {
public:
A() = default;
A(const A &) = default;
A& operator=(const A &) = default;
~A() = default;
};
2. 只能对具有合成版本的成员函数使用“=default”
- 默认构造函数
- 拷贝控制成员(拷贝构造函数、拷贝赋值运算符、析构函数、移动构造函数、移动赋值运算符)
3. 使用“=default”生成的合成函数分为内联的和非内联的
class A {
public:
A() = default; // 在类内用=default-->内联的
A(const A &) = default; // 在类内用=default-->内联的
A& operator=(const A &);
};
A& A::operator=(const A &) = default; // 在类外用=default --> 非内联的
二、使用“=delete”
1. 将相关的函数定义为删除的函数
- 删除的函数:我们虽然声明了它,但不能以任何方式使用它。
2. =delete必须出现在函数第一次声明的时候
3. 可以对任何函数指定=delete
- 删除的函数的主要用途还是禁止拷贝控制成员
4. 析构函数不能使用“=delete”
5. 示例
class A {
public:
A() = default; // 使用合成的默认构造函数
A(const A &) = delete; // 阻止拷贝
A& operator=(const A &) = delete; // 阻止赋值
~A() = default; // 使用合成的析构函数
};
default & delete的更多相关文章
- C++中 =default,=delete用法
=default: 用于显式要求编译器提供合成版本的四大函数(构造.拷贝.析构.赋值) 例如: class A{ public: A() = default; A(const A& a) = ...
- C++2.0新特性(三)——<=default,=delete、alias(别名)、noexcept、override、final、以及和const对比>
一.=default,=delete 1.首先我们要回顾一下类默认函数的概念: C++中,当我们设计与编写一个类时,若不显著申明,则类会默认为我们提供如下几个函数: (1)构造函数(A()).(2)析 ...
- 第10课 面向对象的增强(default/delete、override/final)
一.default和delete关键字 (一)编译器提供的“缺省函数” 1.类的成员函数:构造/析构函数.复制构造/复制赋值函数.移动构造/移动赋值函数. 2. 类的全局默认操作函数:operator ...
- Changing SharePoint Default port ( 80 ) to another port ( 79 ).
Introduction In this How-To I will change my port from 80 to 79, probably because I want to host s ...
- yii post delete request more safe
常规的delete方法如下: /** * Deletes a particular model. * If deletion is successful, the browser will be r ...
- postgresql之 drop & delete & truncate
官网:https://www.postgresql.org/docs/8.1/sql-droptable.html Name DROP TABLE -- remove a table Synopsis ...
- 【Machine Learning】Python开发工具:Anaconda+Sublime
Python开发工具:Anaconda+Sublime 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现 ...
- sublime 相关配置
安转插件:案例格式化HTML代码,需要安装插件,具体安装步骤如下: 1.打开菜单->首选项->插件控制,输入 install package 2.等待程序进入插件管理功能,再输入插件名称: ...
- javascript 基础
javascript概述: javascript历史: * 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEas ...
随机推荐
- [读书笔记] Spring MVC 学习指南 -- 第一章
控制反转(Inversion of Control, IoC)/ 依赖注入: 比如说,类A依赖于类B,A需要调用B的某一个方法,那么在调用之前,类A必须先获得B的一个示例引用. 通常我们可以在A中写代 ...
- Canvas状态的保存与恢复
Canvas的API提供了save()和restore()的方法,用于保存及恢复当前canvas绘图环境的所有属性. save()与restore()方法可以嵌套调用 save()方法将当前绘图环境压 ...
- ElasticSearch5插件安装
http://blog.csdn.net/napoay/article/details/53896348 #更新 sudo yum update -y sudo rpm -ivh http://dl. ...
- C语言判断字符串是否旋转过
//方法一 //每次左旋一次,判断旋转之后字符串是否与目标字符串是否一致 //旋转一圈 没有找到返回0 #define _CRT_SECURE_NO_WARNINGS #include<stdi ...
- PWA-缓存
PWA-缓存 基础 PWA强大的离线能力就在于Service Worker拦截请求及提供缓存的能力,Service Worker的缓存能力比较强大,它能够赋予你更加精确控制缓存的能力.示例页面 < ...
- git改密码出现授权问题
git修改密码后显示Authentication failed for …… ,意思就是电脑修改密码后导致和git账户密码不匹配 解决方法:
- 使用GeoServer发布shp数据为WMS服务和WFS服务
使用GeoServer发布shp数据为WMS服务和WFS服务 1安装GeoServer 2使用GeoServer上传数据 3使用GeoServer发布数据为WMS和WFS 看完本教程,你将学会安装Ge ...
- java web 开发模式
1.Model1 javaBean+jsp:jsp直接操作数据库,不安全,开发维护复杂 2.Model2:MVC 原理:把Model1的操作javaBean操作抽取为控制层 实现:控制层使用servl ...
- Codeforces431C_K-Tree_KEY
题目传送门 题目大意:给定一棵K叉树,一个节点下的K个节点的分数为i,求包含大于等于D的边的总分数为N的方案总数,mod 1e9+7. 这是一道很好的树形DP题,首先看N和K两个条件,可以轻易的得到方 ...
- [python]安装wxpython的时候遇到问题记录
一.安装wxpython的时候报错 “no installation of python 2.7 found in registy” 解决方案: win7上,已经安装python27,但是在安装wxp ...