Bruce Eckel's Thinking in C++, 2nd Ed | Contents | Prev | Next |
Change example so it doesn’t use the words “base” and “derived.” Too confusing. The syntax for composition is obvious, but to perform inheritance there’s a new and different form.
//: C14:Inherit.cpp // Simple inheritance #include "Useful.h" #include <iostream> using namespace std; class Y : public X { int i; // Different from X's i public: Y() { i = 0; } int change() { i = permute(); // Different name call return i; } void set(int ii) { i = ii; X::set(ii); // Same-name function call } }; int main() { cout << "sizeof(X) = " << sizeof(X) << endl; cout << "sizeof(Y) = " << sizeof(Y) << endl; Y D; D.change(); // X function interface comes through: D.read(); D.permute(); // Redefined functions hide base versions: D.set(12); } ///:~