[C++11]explicit关键字的作用

9 篇文章 0 订阅
订阅专栏

explicit关键字用来修饰构造函数,防止其被隐式转换。

先来看看隐式类型转换是怎么发生的

class Cirle
{
public:
     Cirle(double f) {radius = f;}
private:
    double radius;
};

Cirle c1 = 20; //隐式调用其构造函数,成功

我们定义了一个带有一个参数的Circle类, 当定义一个Circle对象, 使用值操作符=赋值时,隐式调用了构造函数, 使得程序能够编译通过。这或许可以带来便利, 而有时却会带来意想不到的后果. explicit关键字用来避免这样的情况发生.。

采用explicit关键字
通过将构造函数声明为explicit(显式)的方式可以防止隐式转换。即,explicit构造函数必须显式调用。

class Circle
{
public:
     explicit Circle(double f) {radius = f;}
private:
    double radius;
};
Cirle c1 = 20;//编译错误,不能隐式调用其构造函数
Circle c2 = Circle (20);//显示调用成功

编译将会报错
在这里插入图片描述

C++ - explicit关键字
平凡小智
07-25 2481
C++中关于explicit关键字的详解
C++11 explicit的使用
weixin_34198881的博客
03-07 144
C++中的explicit关键字只能用于修饰只有一个参数的类构造函数 , 它的作用是表明该构造函数是显示的, 而非隐式的,跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下为implicit(隐式)。 关于explicit关键字,先看看MSDN上的解释: This keyword is a declaration specifier that can only be ...
C++关键字explicit的详解及用法
cbNotes的专栏:不积硅步,无以至千里;不积小流,无以成江海!
09-24 5490
C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。 explicit使用注意事项:     *     explicit 关键字只能用于类内部的构造函数声明上。     *     explicit 关键字作用于单个参数的构造函数。     *     在C++中,explicit关键字
C++ 11 explicit关键字
Flying snow
07-17 295
C++中,我们有时可以将构造函数用作自动类型转换函数(构造函数)。但这种自动特性并非总是合乎要求的,有时会导致意外的类型转换,因此,C++新增了关键字explicit,用于关闭这种自动特性。即被explicit关键字修饰的类构造函数,不能进行自动地隐式类型转换,只能显式地进行类型转换。跟它相对应的另一个关键字是implicit,意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式)。 demo1 #include <iostream> #include <string>
C++11——explicit关键字
qq_45311905的博客
12-21 1036
explicit关键字C++2.0之前已经有了,一般只用于修饰构造函数,用于防止隐式转换。 有一个专业术语很拗口,叫nonexplicit one argument constructor,特指只有第一个形参没有默认值,其他形参都有默认值的构造函数,拥有这类构造函数的类可以发生隐式转换。 explicit关键字就是用于修饰nonexplicit one argument constructor 隐式转换并不是不好,而是根据需求用户可以通过是否加explicit关键字来决定需要或者杜绝隐式转换。 class
C++11explicit关键字
吸喵高手的小窝
09-19 252
C++11代码中最好带上explicit关键字explicit关键字作用是: C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). 关键字:构造函数只有一个参数(当有多个参数时,自动会被指明,就不存在这个情况) 构造函数是显式的而不是隐式的 为了防止以下情况的出现: class A{ public: ..
C++ Explicit关键字详细解析
09-05
C++编程语言中,`explicit`关键字是一个非常重要的特性,它主要用于控制类的构造函数如何参与类型转换。本文将详细解析`explicit`关键字的用途、意义以及它如何影响类对象的创建和赋值。 `explicit`关键字用于...
认识 C++ 中的explicit 关键字
12-22
C++编程语言中,`explicit`关键字是一个非常重要的修饰符,它用于构造函数,用于控制类型转换的行为。本文将深入探讨`explicit`关键字作用、使用场景以及它如何帮助避免潜在的错误。 首先,让我们来看一下`...
C++ explicit关键字的应用方法详细讲解
12-25
我们今天为大家介绍的C++ explicit关键字就是其中一个应用比较频繁的关键字。下面就让我们一起来看看这方面的知识吧。 C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有”显式”那么必然就...
C++中的Explicit关键字
01-20
C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下会发现现有的MFC库或者C++标准库中的相关类...
C++11explicit 关键字
最新发布
kelvin_yin的专栏
04-04 418
C++ 中,explicit关键字用于防止类的构造函数或转换运算符进行隐式类型转换。默认情况下,如果一个构造函数只需要一个参数,或者一个转换运算符只转换为一个特定类型,编译器会自动使用它们进行隐式转换。虽然这可以使代码更加简洁,但有时也会导致意料之外的行为,尤其是在类型转换不明显或不期望发生时。通过在构造函数或转换运算符前添加explicit关键字,可以要求编译器只在显式转换时使用这些函数,从而增加代码的清晰度和安全性。
C++11_关键字_explicit
bigchen
01-21 735
explicitC++11中特意添加的一个关键字。通常情况下用于构造函数前面,表示显式表示,禁止构造函数的隐式转换。 为什么要这么做呢?这么做有什么好处呢? 我们先来看看下面的例子,顺便提几个知识点。 conversion function vs non-explicit-one-argument ctor #include <iostream> using namespace std; class Fraction { public: Fraction(int
C++ explicit 用法总结
记录日常开发的小问题备忘
11-04 445
网上有中说法说C++explicit关键字只能用于修饰只有一个参数的构造函数,其实这种说法是不准确的,有误导性,explicit关键字是为了防止构造函数的隐式转换的,理论上说,多参构造是不会发生隐式转换的,但是,如果,多参构造的参数都有默认值的话,那么隐式转换也会发生的,所以如果多参,且每个参数都有默认值的话,为了防止隐式转换也需要使用explicit关键字,什么是隐式转换,看下面例子。如果我们在我们的构造函数前加上explicit关键字,那么编译阶段就会报错,避免了运行期错误,在编码过程中能用尽用。
c++中的explicit
weixin_30335575的博客
07-06 200
c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class MyClass{public:MyClass( int num );}....MyClass obj = ...
C++11explicit关键字、左值与右值、函数返回值当引用、结构体内存对齐
procurar的博客
09-02 491
explicit关键字、左值与右值、函数返回值当引用、结构体内存对齐
C++ 补充 & C++ 11 - explicit 关键字
weifc-wei 的博客
06-30 243
explicit 关键字 explicit /ɪkˈsplɪsɪt/ 明确的;清楚的;直率的;详述的 作用是表明该构造函数是显示的, 而非隐式的.不能进行隐式转换! 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). demo1 代码: #include <iostream> #include <string> using namespace std; class student { public: stu
C++11 新特性 之 explicit关键字 - 显示构造与隐式构造
cpp_learner的博客
06-13 4122
explicit作用是表明该构造函数是显示的, 而非隐式的.不能进行隐式转换! 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).
C++学习】explicit修饰构造函数
小小小草儿的博客哟
07-09 1224
C++中,可以使用关键字explicit对类的构造函数进行修饰。被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。 官方解释:禁止隐式调用类内的单参数构造函数。 (1)该关键字只能用于修饰类内部的构造函数。 (2)该关键字修饰的构造函数只能是单参数构造函数,对于多参数构造函数是无效的。 (3)禁止隐式调用拷贝构造函数。 (4)禁止类对象之间的隐式转换方式。...
C++11 explicit关键字的详细讲解
m0_53636439的博客
08-04 304
explicit explicit作用是表明该构造函数是显示的, 而非隐式的.不能进行隐式转换! 跟它相对应的另一个关键字是implicit,意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). 首先通过代码示例看一下 #include <iostream> #include <string> using namespace std; class Son { public: Son(int age) { m_age = age; cout <
c++explicit关键字作用是什么,举个例子
04-18
C++ 中的 explicit 关键字表示禁止隐式转换,它可以用于类的构造函数和类型转换函数。下面是一个使用 explicit 关键字的类构造函数的示例: ``` class A { public: explicit A(int x) { // ... } }; int main() { A a = 1; // 错误,禁止隐式转换 A b(2); // 正确,显式转换 return 0; } ``` 在上面的例子中,如果没有使用 explicit 关键字,则可以直接将整数类型的值传递给 A 类的构造函数,这是一种隐式转换。但是由于使用了 explicit 关键字,所以编译器会报错。
写文章

热门文章

  • torchvision.datasets.CIFAR10模块使用讲解 23297
  • OCR识别——百度飞桨PaddleOCR测试及环境搭建详解 16025
  • QComboBox使用讲解 12645
  • opencv 矩形cv::Rect数据结构详解 12518
  • Halcon常用算子汇总 10808

分类专栏

  • opencv 29篇
  • Qt 18篇
  • Pytorch 11篇
  • Halcon 8篇
  • python 7篇
  • c++ 9篇
  • 深度学习 11篇
  • 设计模式 5篇
  • Leetcode刷题记录 5篇
  • 开源 1篇
  • 通信 2篇
  • 图像处理 34篇
  • 计算机组成原理 1篇

最新评论

  • Qt作品(一): 框选图片任意数量Roi(感兴趣区域)工具

    wolf20015: 你好,请问有源码嘛?邮箱120423921@qq.com,非常感谢!

  • c++ 求点到直线的距离

    zhidao101: 错误的代码,k == k1

  • 使用QTreeWidget 模仿Qt Designer属性编辑器

    sany_3827: 大佬,参数如何保存

  • Pytorch报urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]错误

    m0_73850043: 前面与你报的错不一样,找不到torch.utils.data.utils.py源文件_get_redirect_url函数中怎么办呢

  • [c++11]decltype关键字讲解

    proteus2: auto auto_v=ivalue; //等价于int &auto_v=ivalue; 正确为: auto auto_v=ivalue; //等价于int auto_v=ivalue;

最新文章

  • Pytorch安装及环境配置详细教程(CUDA版本)
  • [c++11] using用法
  • Pytorch torchvision.transforms模块使用
2023年1篇
2022年87篇
2021年9篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家河北校园雕塑玻璃钢青海玻璃钢动物雕塑公司玻璃钢雕塑制作定制厂家玻璃钢人物雕塑厂家维护特点吉林特色玻璃钢雕塑多少钱上海大型商场美陈生产合肥玻璃钢仿铜麒麟雕塑玻璃钢民族雕塑长春广场玻璃钢雕塑厂家荔枝玻璃钢卡通雕塑定制金山区镜面玻璃钢雕塑产品介绍卡通人物雕塑玻璃钢人物玻璃钢雕塑工程商场美陈工厂兰州玻璃钢花盆厂家直销宿州玻璃钢雕塑厂报价表不锈钢太湖石玻璃钢雕塑加工本溪实用的沈阳玻璃钢花盆生产玻璃钢雕塑规格三明玻璃钢雕塑费用商场美陈杂志佛山玻璃钢动物雕塑销售方法四川景观玻璃钢雕塑生产厂家美观的玻璃钢雕塑唐山公园玻璃钢雕塑公司贵州玻璃钢仿铜人物雕塑厂黄山玻璃钢雕塑定做厂家商场美陈区域设置江北玻璃钢雕塑江苏知名玻璃钢雕塑在线咨询香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化