Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- //интерфейс - это просто абстрактный класс с чисто виртуальными методами
- //этот класс и является интерфейсом
- //абстрактный класс
- class IBicycle
- {
- public:
- //два чисто виртуальных метода
- virtual void EwistTheWheel() = 0;
- virtual void Drive() = 0;
- };
- class ABicycle : public IBicycle
- {
- public:
- void EwistTheWheel() override
- {
- std::cout << "Я кручу педали на велосипеде A" << std::endl;
- }
- void Drive() override
- {
- std::cout << "Я рулю на велосипеде A" << std::endl;
- }
- };
- class BBicycle : public IBicycle
- {
- public:
- void EwistTheWheel() override
- {
- std::cout << "Я кручу педали на велосипеде B" << std::endl;
- }
- void Drive() override
- {
- std::cout << "Я рулю на велосипеде B" << std::endl;
- }
- };
- //множественное наследование классов интерфейса
- class Human : public ABicycle, public BBicycle
- {
- public:
- //этот метод принимает в параметрах ссылку на объект
- void Drive(IBicycle& bicycle)
- {
- //вызов одной из перегрузок виртуальной функции
- bicycle.EwistTheWheel();
- bicycle.Drive();
- }
- };
- int main(int argc, char *argv[])
- {
- setlocale(LC_ALL, "Rus");
- srand(time(NULL));
- BBicycle bb;
- ABicycle aa;
- Human human;
- human.Drive(bb);
- std::cout << "\n\n\n";
- human.Drive(aa);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement