Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class BaseA
- {
- public:
- int valA;
- public:
- BaseA() : valA { 1 } { std::cout << "BaseA DEFAULT ctor\n"; }
- BaseA(int valAP) : valA{valAP} { std::cout << "BaseA ctor valA\n"; }
- ~BaseA() { std::cout << "BaseA dtor\n"; }
- void info() { std::cout << "I'm BaseA\n"; }
- };
- class Child : public BaseA
- {
- protected:
- int childVal;
- public:
- Child() : BaseA{111}, childVal{ 3 } { std::cout << "Child DEFAULT ctor\n"; }
- Child(int childValP) : childVal{ childValP } { std::cout << "ChildA ctor childValP\n"; }
- ~Child() { std::cout << "Child dtor\n"; }
- void info() { BaseA::info(); std::cout << "I'm Child\n"; }
- };
- class Animal
- {
- std::string name;
- public:
- Animal(std::string nameP) : name{ nameP } {}
- void sayHello()const { sound(); std::cout << " Hello, I'm " << name << '\n'; }
- virtual void sound()const = 0;/*{ std::cout << "??????"; }*/
- };
- class Cat : public Animal
- {
- public:
- Cat(std::string nameP) : Animal{ nameP } {}
- virtual void sound()const override{ std::cout << "Meow!"; }
- };
- class Dog : public Animal
- {
- public:
- Dog(std::string nameP) : Animal{ nameP } {}
- virtual void sound()const override{ std::cout << "RRwaFF!"; }
- };
- class Parrot : public Animal
- {
- public:
- Parrot(std::string nameP) : Animal{ nameP } {}
- virtual void sound()const override{ std::cout << "KrrrrAA!"; }
- };
- void introduce(const Animal& animal)
- {
- animal.sayHello();
- }
- //void introduce(const Cat& animal)
- //{
- // animal.sound(); std::cout << " Hello, I'm " << animal.name << '\n';
- //}
- //
- //void introduce(const Dog& animal)
- //{
- // animal.sound(); std::cout << " Hello, I'm " << animal.name << '\n';
- //}
- //
- //void introduce(const Parrot& animal)
- //{
- // animal.sound(); std::cout << " Hello, I'm " << animal.name << '\n';
- //}
- int main()
- {
- Animal* animals[]{ new Cat{ "Murzik" }, new Dog {"Rex"}, new Parrot { "Kesha" } };
- /*Cat cat{ "Murzik" };
- Dog dog{"Rex"};
- Parrot parrot{ "Kesha" };*/
- //cat.sound(); std::cout << '\n';
- //dog.sound(); std::cout << '\n';
- //parrot.sound(); std::cout << '\n';
- /*introduce(cat);
- introduce(dog);
- introduce(parrot);*/
- for (const auto& animal : animals) { animal->sayHello(); }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement