Advertisement
Ejejejejejjr

Интерфейсы

Dec 29th, 2020
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. //интерфейс - это просто абстрактный класс с чисто виртуальными методами
  5.  
  6. //этот класс и является интерфейсом
  7. //абстрактный класс
  8. class IBicycle
  9. {
  10. public:
  11.     //два чисто виртуальных метода
  12.     virtual void EwistTheWheel() = 0;
  13.     virtual void Drive() = 0;
  14. };
  15.  
  16.  
  17.  
  18. class ABicycle : public IBicycle
  19. {
  20. public:
  21.     void EwistTheWheel() override
  22.     {
  23.         std::cout << "Я кручу педали на велосипеде A" << std::endl;
  24.     }
  25.    
  26.     void Drive() override
  27.     {
  28.         std::cout << "Я рулю на велосипеде A" << std::endl;
  29.     }
  30.    
  31. };
  32.  
  33.  
  34. class BBicycle : public IBicycle
  35. {
  36. public:
  37.     void EwistTheWheel() override
  38.     {
  39.         std::cout << "Я кручу педали на велосипеде B" << std::endl;
  40.     }
  41.    
  42.     void Drive() override
  43.     {
  44.         std::cout << "Я рулю на велосипеде B" << std::endl;
  45.     }
  46.    
  47. };
  48.  
  49.  
  50. //множественное наследование классов интерфейса
  51. class Human : public ABicycle, public BBicycle
  52. {
  53. public:
  54.     //этот метод принимает в параметрах ссылку на объект
  55.     void Drive(IBicycle& bicycle)
  56.     {
  57.         //вызов одной из перегрузок виртуальной функции
  58.         bicycle.EwistTheWheel();
  59.         bicycle.Drive();
  60.     }
  61.    
  62. };
  63.  
  64.  
  65. int main(int argc, char *argv[])
  66. {
  67.     setlocale(LC_ALL, "Rus");
  68.     srand(time(NULL));
  69.    
  70.    
  71.     BBicycle bb;
  72.     ABicycle aa;
  73.    
  74.     Human human;
  75.     human.Drive(bb);
  76.    
  77.     std::cout << "\n\n\n";
  78.    
  79.     human.Drive(aa);
  80.    
  81.     return 0;
  82. }
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement