Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class IJumpable
- {
- public:
- virtual void jump() = 0;
- };
- void IJumpable::jump()
- {
- std::cout << "Jumper-bumper :) ";
- }
- class IFlyable
- {
- public:
- virtual void fly() = 0;
- };
- void IFlyable::fly()
- {
- std::cout << "I belive I can fly... ";
- }
- class JumpingParrot : public IJumpable, public IFlyable
- {
- public:
- void jump() override { std::cout << "Jumping parrot jump-jump..\n"; }
- void fly() override { IFlyable::fly(); std::cout << "I'm a Jumping parrot!\n"; }
- };
- class Frog : public IJumpable
- {
- public:
- void jump() override { std::cout << "Froggy jump-jump Kwaaa!!\n";}
- };
- class Bird : public IFlyable
- {
- public:
- void fly() override { std::cout << "Eine kleine Nachtigal! Zer Gut! :)\n"; }
- };
- 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 << "??????"; }*/
- };
- //void Animal::sound()const
- //{
- // std::cout << "White noise....\n";
- //}
- class Cat : public Animal
- {
- public:
- Cat(std::string nameP) : Animal{ nameP } {}
- virtual void sound()const override { /*Animal::sound();*/ 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()
- {
- JumpingParrot jumpParrot;
- IFlyable* flyers[]{ new Bird, &jumpParrot };
- IJumpable* jumpers[]{ &jumpParrot, new Frog };
- for (const auto& flyer : flyers) { flyer->fly(); }
- for (const auto& jumper : jumpers) { jumper->jump(); }
- // 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);*/
- //Animal an;
- //for (const auto& animal : animals) { animal->sayHello(); }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement