我浏览了很多与转换相关的问题,但似乎没有人以这种方式讨论显式关键字.这是代码:
struct B;
struct A{
/*explicit*/ A(const B&){ cout << 1; } // *1
};
struct B{
/*explicit*/ operator A()const{ cout << 2; } // *2
};
void foo(const A &){}
int main(void){
B b;
foo( /*static_cast<A>*/ (b) ); // *3
}
Run Code Online (Sandbox Code Playgroud)
结果:(Y:未注释,N:注释,X:或者)
# | *1 | *2 | *3 |output|
1 | N | N | N |error |
2 | N | N | Y | 1 |
3 | N | Y | N | 1 | …Run Code Online (Sandbox Code Playgroud)