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的新对象。

原文地址:https://www.cnblogs.com/xieyuanzhen-Feather/p/5844100.html