Why typecasting operator doesn't work with inherited class?
I ha开发者_JAVA技巧ve two classes:
struct B {};
struct D {
operator B& ();
};
When I do;
b = d; // B b; ... D d;
Result is as per expectation where D::operator B&() is invoked (Demo).
If the D is changed to,
struct D : B {
operator B& ();
};
then D::operator B&() is not invoked (Demo). Is B::B(const B&) is finding a better candidate in D then D::operator B&() ?
If D derives from B, there is an implicit automatic conversion from D to B. This has higher precedence than a user-defined conversion operator.
加载中,请稍侯......
精彩评论