Topical Information

The purpose of this quiz is to give you a chance to focus your knowledge of advanced inheritance and polymorphism in C++.

Quiz Information

Questions

  1.  
    TRUE   FALSE   The virtual keyword is used for both polymorphism and (some) multiple inheritance.
    TRUE   FALSE   Multiple inheritance is a breeze: just list two ancestors and you are done.
    TRUE   FALSE   It is very applicable and necessary in real-world problems, too (see the hover-craft and how it is both a land and water vehicle).
    TRUE   FALSE   I try to multiply inherit something everyday.
  2.  
    TRUE   FALSE   Inheritance applies to all member variables, methods, and friends.
    TRUE   FALSE   This rule applies to operator functions, too.
    TRUE   FALSE   Function objects, however, cannot participate in inheritance at all.
  3.  
    TRUE   FALSE   When inheriting from a base with a static data member, all derived classes share the same static member.
  4.  
    TRUE   FALSE   An abstract class is one which contains pure virtual method(s).
    TRUE   FALSE   Pure virtual methods are methods with no definition.
    TRUE   FALSE   This is achieved by setting the prototype = 0.
    TRUE   FALSE   This says in effect "this method will never be defined" which would, of course, be impossible to call and so the compiler won't allow objects to exist of this class.
    TRUE   FALSE   We can, however, make pointers to non-abstract derivatives of the abstract class.
  5.  
    TRUE   FALSE   Composition is a situation where one class has at least one data member which is of another class type.
    TRUE   FALSE   This is known as the "HAS A" relationship in software engineering.
    TRUE   FALSE   Inheritance is a situation where one class is a more specific sub-group of another class.
    TRUE   FALSE   In software engineering, this is known as the "IS A" relationship.
  6.  
    TRUE   FALSE   When inheriting, we normally use the inheritance mode public.
    TRUE   FALSE   However, we can also substitute private or protected there.
    TRUE   FALSE   A private inheritance mode causes all parent members to be private members of the child when viewed from the child class' descendants or outside the hierarchy.
    TRUE   FALSE   Likewise, a protected inheritance mode causes all parent members to be protected members of the child when viewed from the child class' descendants or outside the hierarchy.
    TRUE   FALSE   Both of these can prove terribly troublesome and are often avoided.
  7.  
    TRUE   FALSE   The actual type of object at the end of a polymorphic base pointer can be determined at run time.
    TRUE   FALSE   To do so, we need to use either the typeof function or the dynamic_cast operator.
    TRUE   FALSE   The function is in the typeinfo library and returns a type_info structure.
    TRUE   FALSE   To identify the type, you can compare the return value of the type_info structure's name method to a string containing the name of the type you desire.
    TRUE   FALSE   Such names are just what you'd expect them to be and so this is an easy method of identification.
    TRUE   FALSE   When using dynamic_cast, though, you simply check if the result of the cast is nullptr or not.
    TRUE   FALSE   If it's nullptr, the object was NOT of the desired type.