diff --git a/lectures/26_inheritance/README.md b/lectures/26_inheritance/README.md index 8f7ba05..d83a91a 100644 --- a/lectures/26_inheritance/README.md +++ b/lectures/26_inheritance/README.md @@ -180,12 +180,14 @@ Create a class hierarchy of geometric objects, such as: triangle, isosceles tria rhombus, kite, trapezoid, circle, ellipse, etc. How should this hierarchy be arranged? What member variables and member functions should be in each class? -## 26.10 Note: Multiple Inheritance +## 26.10 Multiple Inheritance - When sketching a class hierarchy for geometric objects, you may have wanted to specify relationships that were more complex... in particular some objects may wish to inherit from more than one base class. - This is called multiple inheritance and can make many implementation details significantly more hairy. Different programming languages offer different variations of multiple inheritance. - See [example 1](multiple_inheritance1.cpp) and [example 2](multiple_inheritance2.cpp). +- And see [example 3](multiple_level_inheritance.cpp) for a multiple level inheritance example. + ## 26.11 Introduction to Polymorphism - Let’s consider a small class hierarchy version of polygonal objects: diff --git a/lectures/26_inheritance/ABCD.cpp b/lectures/26_inheritance/multiple_level_inheritance.cpp similarity index 53% rename from lectures/26_inheritance/ABCD.cpp rename to lectures/26_inheritance/multiple_level_inheritance.cpp index dfaabf3..c32f183 100644 --- a/lectures/26_inheritance/ABCD.cpp +++ b/lectures/26_inheritance/multiple_level_inheritance.cpp @@ -1,3 +1,7 @@ +#include + +// multiple-level inheritance + class A { public: @@ -20,9 +24,15 @@ public: class D:public C { public: + D(int a, int b, int c, int d):C(a,b,c),d(d){} + void print(){ + std::cout << a << ":" << b << ":" << c << ":" << d << std::endl; + } int d; }; int main(){ + D dObject(1,2,3,4); + dObject.print(); return 0; }