c++ 中关键字 explicit

通过一个简单例子就可以

class Stringer
{Stringer(int n);Stringer(const char* T);
};

假如有上面的一个类, 其中有个参数为整型的构造器, n表示Stringer分配n个char长度的字符。下面如果有下面的语句:

Stringer str = 10;

事实上, 我们是希望字符串为10, 但是这个语句会发生隐形转换:

Stringer str = Stringer(10);

最后产生的结果不是我们期望的产生字符串“10”,而是产生了分配了10个字符长度的字符串。

针对这种情况, 我们只要如下写:

explicit Stringer (int n);

那么在编译的时候, 如果有 类似 String str = 10 这样的写法, 编译就会报错。

根据 google 代码规范中规定,所有但参数构造函数都必须是显式的, 一般拷贝构造函数也必须使用explicit

explicit c++相关推荐

  1. 【C++】explicit关键字

    explicit的优点是可以避免不合时宜的类型变换,缺点无.所以google约定所有单参数的构造函数都必须是显式的** explicit关键字只需用于类内的单参数构造函数前面.由于无参数的构造函数和多 ...

  2. C++中的explicit关键字介绍

    C++中的关键字explicit主要是用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换.类构造函数默认情况下声明为隐式的即implicit. 隐式转 ...

  3. explicit specialization of ‘Race‘ after instantiation ,implicit instantiation first required here。

    报错1: E:\project\qt\Pokemon3\PokemonServer\pokemon.cpp:470: error: specialization of 'Race::Race() [w ...

  4. C++中explicit关键字的使用

    1.explicit函数介绍 作用:explicit构造函数是用来防止隐式转换的 实例1如下: #include <iostream>using namespace std;// expl ...

  5. 人脸对齐--Face Alignment by Explicit Shape Regression

    Face Alignment by Explicit Shape Regression CVPR2012 https://github.com/soundsilence/FaceAlignment 本 ...

  6. C#之自己定义的implicit和explicit转换

    在类型转换时常会遇到隐式转换和显式转换.那我们自己定义的类型要怎样去定义隐式转换和显式转换?我们来看一段代码 public class Rational{private Int32 _inner_in ...

  7. explicit关键字

    2019独角兽企业重金招聘Python工程师标准>>> 总结:explicit   只对构造函数起作用,用来抑制隐式转换.   当涉及到以内自定义类型和内置类型之间的赋值操作,构造函 ...

  8. C++中explicit关键字的作用

    C++中explicit关键字的作用 explicit用来防止由构造函数定义的隐式转换. 要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换. ...

  9. C++ explicit constructor/copy constructor note

    C++:explict 作用显示声明构造函数只能被显示调用从而阻止编译器的隐式转换,类似只能用()显示调用,而不能=或者隐式调用 1 #include <iostream> 2 #incl ...

  10. no copy constructor available or copy constructor is declared #39;explicit#39;

    今天新写了一个类.然后对这个类使用STL中的vector,碰到错误: no copy constructor available or copy constructor is declared 'ex ...

最新文章

  1. # 2021华为软件精英挑战赛C/C++——build.sh/build_and_run.sh/CodeCraft_zip.sh注释
  2. 行为驱动开发BDD概要
  3. 导出Excel java
  4. 7-10 找最小的字符串 (15 分)
  5. 大学计算机试卷分析报告,(最新整理)大学试卷分析报告
  6. 《编程之美》笔记(一)
  7. 一、linux内核源码分析(内核源码结构组成)
  8. html插入mkv,mkv导入到PR中该怎么做?
  9. 2021宇哥八套卷总结—第三套试卷分析
  10. 投票管理系统的设计与实现(项目实现)
  11. Make the Team(匈牙利算法)
  12. 为什么你应该(从现在开始就)写博客尤其是IT行业(转)
  13. React Native组件之Switch和Picker和Slide
  14. Maven中Scop为test时Eclispe中需要注意的地方
  15. 网络爬虫 | selenium 爬取动态加载信息
  16. htc+m8+wp+android,WP8.1版HTC One M8官方配置全揭晓
  17. java 导出加密压缩包 设置 压缩包加密密码 并下载 (springboot+文件工具类)
  18. BugkuCTF-web-秋名山车神 writeup
  19. 科技企业上市就是一大悲剧(下)
  20. 如何写优雅的代码(序)——自语

热门文章

  1. C语言指针中带星号与不带星号的区别以及何时使用。
  2. 误导学生?各类计算机大学排名有多么不靠谱!
  3. 戴了一天口罩,头晕、胸闷、浑身难受怎么办?
  4. ajax、fetch和axios的比较
  5. Python split() 方法
  6. ahk编程_ahk的web自动化编程(COM,初级).doc
  7. 马克思主义哲学是否只是“抄袭”和断章取义了别人的思想
  8. 云合影程序_实战丨与「火箭少女」合影AI小程序的技术实践与思考
  9. debian修改固定ip
  10. oppo手机如何找android,OPPO手机相册中的图片不见了怎么找回?