C++中单参数构造函数若不声明为explict,在合适的场合可以产生隐式转换:由成员变量类型转换为类类型。
下面的代码展示如何实现反向的转换:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 void changeFontSize(FontHandle f, int newsize);
class Font{
public:operator FontHandle() const //隐式转换函数{return f;}
private:FontHandle f;
};Font f;
int newsize;
changeFontSize(f, newsize); //将Font隐式转换成FontHandle
另外,两个或更多参数的non-explicit构造函数,如果所有形参都提供了默认实参,那么在需要一个类类型对象的表达式位置,提供一个first形参类型的对象,编译器也执行隐式转换,转换得到一个类对象。