//: C09:Duplicate.cpp // From "Thinking in C++, Volume 2", by Bruce Eckel & Chuck Allison. // (c) 1995-2004 MindView, Inc. All Rights Reserved. // See source code use permissions stated in the file 'License.txt', // distributed with the code package available at www.MindView.net. // Shows duplicate subobjects. #include using namespace std; class Top { int x; public: Top(int n) { x = n; } }; class Left : public Top { int y; public: Left(int m, int n) : Top(m) { y = n; } }; class Right : public Top { int z; public: Right(int m, int n) : Top(m) { z = n; } }; class Bottom : public Left, public Right { int w; public: Bottom(int i, int j, int k, int m) : Left(i, k), Right(j, k) { w = m; } }; int main() { Bottom b(1, 2, 3, 4); cout << sizeof b << endl; // 20 } ///:~