c++ explict
explicit 用于一个参数的构造函数;防止隐式转换。
什么意思呢?
myClass(int x); 这是个构造函数
我们可以使用 myClass a(4); 或 myClass a=4;来调用它
explicit myClass(int);这是个构造函数,我们只能用 myClass a(4); 无法用myClass a=4;
注意:如果有 myClass(int x);
myClass(myClass &&) =delete; //移动构造函数被禁用
此时我们也只能使用 myClass a(4); 无法使用myClass a=4;
当定义了移动构造函数/移动赋值(无论是否是delete)此时若想使用myClass a,b; a=b;赋值运算符 必须显示的定义才能使用,哪怕是=default也能用
总结:当使用隐式转换时,需要移动构造函数可用(可用 指不是delete)
也就是说当移动构造函数为delete时可以不需要用explicit 关键字; 用explicit 编写时提示错误,不用explicit 编译时提示错误 ,所以尽量用
当声明了移动构造函数/移动赋值函数(指写了出来不管是delete还是其他),此时无默认赋值运算符,若要使用必须也声明
c++ explict的更多相关文章
- explict关键字
[本文链接] http://www.cnblogs.com/hellogiser/p/explict.html [分析] explicit 只对构造函数起作用,用来抑制隐式转换. Suppose yo ...
- C++ explict 关键字
关键字explicit可以禁止“单参数构造函数”被用于自动类型转换class Stack{explicit Stack(int size);};没有explicit的话Stack s = 40;能编译 ...
- C#基础知识简单梳理
本文是转发博友的总结,方便自己以后随时温习: 1.值类型和引用类型 1.1堆和栈 简单的说值类型存放在堆栈上面,引用类型的数据存放在托管堆上面(它的引用地址却存放在堆栈上面)! 栈:它是一个内存数组, ...
- 第一章:UNIX基础知识
本章内容主要是为了学习UNIX的基本知识和一些最基本的系统函数. 学习的关键就是跟随者书本敲代码.本节遇到的第一个问题就死本书的apue.h这个文件:一开始没有注意这个文件,盲目的去百度,一番百度之后 ...
- 转载文章----C#基础概念
转载地址:http://www.cnblogs.com/zhouzhou-aspnet/articles/2591596.html 1.值类型和引用类型 1.1堆和栈 简单的说值类型存放在堆栈上面,引 ...
- C++ 之 重载赋值操作符
Widget 类中,定义了一个 Bitmap 类型的私有数据成员 -- pb 指针 class Bitmap { ... }; class Widget { private: Bitmap *pb; ...
- WPF QuickStart系列之数据绑定(Data Binding)
这篇博客将展示WPF DataBinding的内容. 首先看一下WPF Data Binding的概览, Binding Source可以是任意的CLR对象,或者XML文件等,Binding Targ ...
- NUnit笔记
注意:单元测试中,Case 与 Case 之间不能有任何关系 测试方法不能有返回值,不能有参数,测试方法必须声明为 public [TestFixture] //声明测试类 [SetUp] //建立, ...
- nuint笔记
注意:单元测试中,Case 与 Case 之间不能有任何关系 测试方法不能有返回值,不能有参数,测试方法必须声明为 public [TestFixture] //声明测试类 [SetUp] //建立, ...
随机推荐
- mysql-如何删除主从同步
我用 change master 语句添加了一个主从同步, change master to master_host='localhost',master_user='slave',master_p ...
- C#几种单例模式
/** * 单例模式-饿汉式 */ public class Singleton { // 在定义的时候就初始化_instance, private static Singleton _instanc ...
- python中常见的数据类型
str 常用方法 1. 索引(下标) s = 'ABCDEFGHIJKLMN's1 = s[0]print('s[0] = ' + s1) #s[0] = A 2. 切片:顾头不顾尾 s = 'A ...
- ES6模块与CommonJS模块有什么区别?
ES6 Module和CommonJS模块的区别: CommonJS是对模块的浅拷贝,ES6 Module是对模块的引用,即ES6 Module只存只读,不能改变其值,具体点就是指针指向不能变,类似c ...
- (三)学习了解OrchardCore笔记——灵魂中间件ModularTenantContainerMiddleware的第一行①的模块部分
了解到了OrchardCore主要由两个中间件(ModularTenantContainerMiddleware和ModularTenantRouterMiddleware)构成,下面开始了解Modu ...
- DVWA学习记录 PartⅧ
Weak Session IDs 1. 题目 用户访问服务器的时候,为了区别多个用户,服务器都会给每一个用户分配一个 session id .用户拿到 session id 后就会保存到 cookie ...
- java 面向对象(二十六):枚举类的使用
1. 枚举类的说明:* 1.枚举类的理解:类的对象只有有限个,确定的.我们称此类为枚举类* 2.当需要定义一组常量时,强烈建议使用枚举类* 3.如果枚举类中只一个对象,则可以作为单例模式的实现方式. ...
- 数据可视化之DAX篇(二十五)PowerBI常用的度量值:累计至今
https://zhuanlan.zhihu.com/p/64999937 经常碰到本年至今.本月至今的数据计算,其实还有一类计算是,从历史最早日期至今的累计计算,比如从开业到现在总共卖出了多少件商品 ...
- Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global以及nolocal的用法
Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global以及nolocal的用法 目录 Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global ...
- Java常用类-Object类
一.java.lang.Object类 1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 3.Obj ...