Advertisement
Ejejejejejjr

Возврат значения виртуальных функций

Dec 28th, 2020
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. class Msg
  5. {
  6. public:
  7.     //конструктор-сеттер
  8.     Msg(std::string msg)
  9.     {
  10.         this->msg = msg;
  11.     }
  12.    
  13.     //виртуальный геттер
  14.     virtual std::string getMsg()
  15.     {
  16.         return msg;
  17.     }
  18.    
  19. private:
  20.     std::string msg;
  21. };
  22.  
  23.  
  24. class BraketsMsg : public Msg
  25. {
  26. public:
  27.     //этот конструктор полностью наследует конструктор класса Msg
  28.     BraketsMsg(std::string msg) : Msg(msg) {}
  29.    
  30.     //перегрузка виртуального метода класса Msg для класса BraketsMsg
  31.     //возврат значения  функции-потомка унаследованного класса
  32.     std::string getMsg() override
  33.     {
  34.         //возврат значения функции базового класса Msg
  35.         return "[" + Msg::getMsg() + "]";
  36.     }
  37. };
  38.  
  39.  
  40. class Printer
  41. {
  42. public:
  43.     //функция, принимающая в параметрах ссылку на объект класса и ,возвращающая значение функции getMsg() одного из классов
  44.     void Print(Msg *msg)
  45.     {
  46.         std::cout << msg->getMsg() << std::endl;
  47.     }
  48. };
  49.  
  50.  
  51. int main(int argc, char *argv[])
  52. {
  53.     setlocale(LC_ALL, "Rus");
  54.     srand(time(NULL));
  55.    
  56.     Msg msg("Раз");
  57.     BraketsMsg mes("Два");
  58.    
  59.     Printer get;
  60.    
  61.     get.Print(&msg);
  62.     get.Print(&mes);
  63.    
  64.    
  65.     return 0;
  66. }
  67.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement