我最近了解了explicit
说明符。
假设我们有:
f( W, W, W );
现在如果我们这样做
f( 42, 3.14, "seven" );
编译器将尝试以下隐式转换:
f( W(42), W(3.14), W("seven") );
如果我们为 W 定义了匹配的构造函数,即:
W(int);
W(double);
W(std::string);
……它会成功的。
但是,如果我们明确第一个:
explicit W(int);
...这会禁用隐式转换。
你现在必须写:
f( W(42), 3.14, "seven" );
即它迫使您明确说明转换
现在谈这个问题:
可以这样写:
explicit W(int,int); // 2 arguments!
这编译!
但我看不到任何可能需要这种语法的相应场景。
谁能提供一个最小的例子?