如果我在Base类中重载operator*(float s)
(并且我没有将其设为虚拟),然后在Derived类中重载operator*(mat4 m)
我可以合理地期望Derived类将对两者做出响应运算符重载?
我假设运算符重载与任何其他函数一样:如果它不是虚拟的并且没有被重写,那么Derived类除了对Derived类唯一的该函数/运算符的任何其他重载外,还可以访问它。
当然,如果它不是虚拟的,但Derived类也定义了operator*(float s)
,那么只有在通过Derived*
指针访问Derived时才会有效地调用它,否则,基类版本会甚至在Derived类上调用,对吗?
答案 0 :(得分:1)
我假设运算符重载与任何其他函数一样:如果它不是虚拟的并且没有被重写,那么Derived类除了对Derived类唯一的该函数/运算符的任何其他重载外,还可以访问它。
与普通会员功能一样,overload in the derived class hides the original,除非您use using
。