explicit关键字是C++中阻止构造函数隐式转换设计的,具体如下
class A{
int a;
A(int a){
this->a=a;
}
}
然后A a1(5);正确 A a2=5;正确
class B{
int b;
explicit A(int b){
this->b=.b;
}
}
然后B b1(5);正确 B b2=5;错误
因为类B的构造函数用exolicit修饰后,就不能隐式转换初始化了,也就是只能使用B b1(5);这种规范的构造对象格式,而后面的B b2=5;这种格式就是错误的,这样使得在只有一个变量时那种不规范的构造格式编译错误
当然其实也可以说不单单是只有一个变量,而是一个无初始参数的“必须变量”,具体如下
class Student{
String name;