*Autor: Wojciech Domski* *Markdown flavoured text. Use any Markdown editor to get preview.* # Dziedziczenie. Poniżej został zawarty prosty przykład związany z dziedziczeniem. Poruszane zagadnienia: * niejawne rzutowanie w górę ``` l.push_back(Lemon()); ``` * operacje na listach (wykorzystanie iteratora) ``` for (list::iterator it = l.begin(); it != l.end(); ++it) ``` * przeciążenia operatorów ``` Fruit & operator +(Seed & w) ``` ``` #include #include using namespace std; class Seed { int i; public: Seed() : i(0) { } Seed(int ni) : i(ni) { } int & operator ()() { return i; } Seed & operator +(Seed & w) { i += w(); return *this; } }; class Fruit { protected: Seed seeds; public: Fruit() : seeds(0) { } Fruit & operator +(Seed & w) { seeds = seeds + w; return *this; } int operator()() { return seeds(); } }; class Lemon: public Fruit { int sour; public: Lemon() : sour(0) { } int & operator ()() { return sour; } }; class Apple: public Fruit { int sweet; public: Apple() : sweet(0) { } int & operator ()() { return sweet; } }; int main(void) { list fl; Seed s(5); fl.push_back(Lemon()); fl.push_back(Apple()); for (list::iterator it = fl.begin(); it != fl.end(); ++it) { cout << (*it)() << endl; *it = *it + s; cout << (*it)() << endl; } } ```