Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rule 10-3-1
#1
There shall be no more than one definition of each virtual function on each path through the inheritance hierarchy.

If I'm interpreting this rule correctly, once you define a virtual function for a derived class with the virtual base class as an ancestor, no more derivations in the chain can override the first definition.

This would seem to cripple a key advantage of using classes and an object-oriented design.

Isn't it pretty common to override a virtual member function in a child class even if the parent class has provided a different definition? Please explain.
<t></t>
Reply
#2
This is intentional and, as stated in the text for the rule, is done to increase clarity for review and maintenance. It would be acceptable to deviate if a more complex hierarchy is required.

We will review this when working on the next version of MISRA C++.
Posted by and on behalf of
the MISRA C++ Working Group
Reply
#3
Under the impression of MISRA Compliance i came up with two deviation permits so far:
  • Reliability (Fault tolerance): Implementing default/fallback behaviour/strategy for polymorphic types
  • Maintainability (Reusability): Extending base class functionality for polymorphic types
<t></t>
Reply
#4
Thanks
Posted by and on behalf of
the MISRA C++ Working Group
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)