从基类派生类中的不同重载运算符

时间:2013-06-07 15:52:53

标签: c++ operator-overloading

如果我在Base类中重载operator*(float s)(并且我没有将其设为虚拟),然后在Derived类中重载operator*(mat4 m)我可以合理地期望Derived类将对两者做出响应运算符重载?

我假设运算符重载与任何其他函数一样:如果它不是虚拟的并且没有被重写,那么Derived类除了对Derived类唯一的该函数/运算符的任何其他重载外,还可以访问它。

当然,如果它不是虚拟的,但Derived类也定义了operator*(float s),那么只有在通过Derived*指针访问Derived时才会有效地调用它,否则,基类版本会甚至在Derived类上调用,对吗?

1 个答案:

答案 0 :(得分:1)

  

我假设运算符重载与任何其他函数一样:如果它不是虚拟的并且没有被重写,那么Derived类除了对Derived类唯一的该函数/运算符的任何其他重载外,还可以访问它。

与普通会员功能一样,overload in the derived class hides the original,除非您use using