为什么类型转换操作符不能用于继承类?

时间:2011-07-27 10:08:58

标签: c++ inheritance casting operator-overloading

我有两个班级:

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&()找到了更好的候选人吗?

1 个答案:

答案 0 :(得分:7)

如果D来自B,则隐式自动从D转换为B。这比用户定义的转换运算符具有更高的优先级。