非 C++内建类型 A 和 B,在哪几种情况下 B 能隐式转化为 A

答:

  • a)class B : public A{……}//B 公有继承自 A,可以是间接继承的
  • b)class B{operator A();}//B 实现了隐式转化为 A 的转化
  • c)class A{ A(const B&);}//A 实现了 non-explicit 的参数为 B 构造函数 (可以有其他带带默认值的参数)
  • d)A& operator= (const A&);//赋值操作,虽不是正宗的隐式类型转换, 但也可以勉强算一个