Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Если есть некоторая иерархия классов, то при создании объекта, принадлежащего данной иерархии, всегда
- // будет сначала вызываться конструктор базового класса, затем класса наследника и т.д. по цепочке.
- // При этом когда объекты данных классов будут удаляться сначала всегда вызввается объект самого последнего класса
- // наследника и т.д. по цепочке ввверх пока не дойдем до деструктора самого базового класса.
- //#include <iostream>
- //
- //using namespace std;
- //
- //struct Log
- //{
- // Log(string name) : n(name)
- // {
- // cout << "+ " << n << endl;
- // }
- // ~Log()
- // {
- // cout << "- " << n << endl;
- // }
- // string n;
- //};
- //
- //struct Fruit
- //{
- // string type = "fruit";
- // Log l = Log("Fruit");
- //};
- //
- //struct Apple : public Fruit
- //{
- // Apple()
- // {
- // type = "apple";
- // }
- // Log l = Log("Apple");
- //
- //};
- //---------------------------------------------------------------
- //#include <iostream>
- //
- //using namespace std;
- //
- //struct Log
- //{
- // Log(string name) : n(name)
- // {
- // cout << "+ " << n << endl;
- // }
- // ~Log()
- // {
- // cout << "- " << n << endl;
- // }
- // string n;
- //};
- //
- //struct Fruit
- //{
- // Fruit(const string& t): l(t + " (Fruit)")
- // {
- //
- // }
- // const Log l;
- //};
- //
- //struct Apple : public Fruit
- //{
- // Apple(const string& t) :Fruit(t), l(t)
- // {
- //
- // }
- // const Log l;
- //
- //};
- //---------------------------------------------------------------
- #include <iostream>
- using namespace std;
- struct Log
- {
- Log(string name) : n(name)
- {
- cout << "+ " << n << endl;
- }
- ~Log()
- {
- cout << "- " << n << endl;
- }
- string n;
- };
- struct Fruit
- {
- Fruit(const string& t) : l(t + " (Fruit)")
- {
- }
- const Log l;
- };
- struct Apple : public Fruit
- {
- Apple(const string& t) :Fruit(t), l(t)
- {
- }
- const Log l;
- };
- //class AppleTree
- //{
- //public:
- // AppleTree() : a1("a1"), a2("a2")
- // {
- //
- // }
- // Log l = Log("AppleTree");
- // Apple a1;
- // Apple a2;
- // // Реальный порядок конструирования зависит только от того в каком порядке они перичислены внутри класса
- //};
- class AppleTree
- {
- public:
- AppleTree(const string& t) : type(t), a1(type + " a1"), a2(type + " a2")
- {
- }
- /*Apple a1;
- Apple a2;
- string type;*/
- string type;
- Apple a1;
- Apple a2;
- // Реальный порядок конструирования зависит только от того в каком порядке они перичислены внутри класса
- };
- int main()
- {
- AppleTree at("AppleTree");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement