我有两个班级:
struct B {};
struct D {
operator B& ();
};
当我这样做时;
b = d; // B b; ... D d;
结果符合预期D::operator B&()
被调用(Demo)。
如果D
更改为,
struct D : B {
operator B& ();
};
然后D::operator B&()
未被调用(Demo)。 B::B(const B&)
在D
然后D::operator B&()
找到了更好的候选人吗?
答案 0 :(得分:7)
如果D
来自B
,则隐式自动从D
转换为B
。这比用户定义的转换运算符具有更高的优先级。