explicit关键字

Posted 羽珞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了explicit关键字相关的知识,希望对你有一定的参考价值。

1.通过关键字,可以禁止“单参数构造函数(single argument constructor)”被用于自动类型转换。

典例:群集类别
// 可以将初始长度作为参数传给构造函数。
例:

class a {
      a (int size); // 这个构造函数有能力将一个int自动转换为a。
};

 

a temp;
temp = 10; // 允许

 

class a {
    explicit a (int size); // 加上explicit,上一个代码不被允许
};

 

2.explicit 能阻止以赋值语法进行带有转型操作的初始化。

a temp1(10); // 正确
a temp2 = 10; // 错误

??

因为

A a;

B b(a);    // explicit conversion
A a;
B b = a;   // implicit conversion

这两者之间存在着差异,前者是通过显式类型,根据类型A产生了一个类型为B的新对象;

而后者通过隐式类型转换,产生一个类型为B的新对象。

以上是关于explicit关键字的主要内容,如果未能解决你的问题,请参考以下文章

C++关键字之:explicit

QT 基础     explicit 用法

C++中的explicit关键字的用法

类和对象——补充(运算符重载,static和explicit关键字和友元,内部类)

C++ explicit关键字详解

explicit关键字