explicit Student(const std::string & n)
: name(a),scores(n){}
explicit Student(int n):name("NULLY").scores(n){}
- 关键字explicit 可以用一个参数调用的构造函数将用作从参数类型到类类型的隐式转换函数,但一般不这么做。
在第二个构造函数里面,第一个参数代表的是数组的元素个数,不是数组的值,因此将一个构造函数用作int
到Student的转换函数是没有意义的,使用explicic关键字的意义在于关闭隐式转换,不使用该关键字可以这样做:
Student doh("Hommm",10); doh = 5;
如果键入的是doh,而不是doh[0],省略了关键字explicit,将使用构造函数调用Student(5),将5转换为一个student临时变量,并使用“NULLY”来设置name的值。因此赋值操作将使用临时变量来替换原先的doh值,使用explicic之后,编译器将认为上述的赋值运算操作是错误的。
注意:explicit关键字只允许出现在类内的构造函数声明处