Advertisement
Ejejejejejjr

Специализация шаблонов классов

Jan 2nd, 2021
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4.  
  5.  
  6.  
  7. template<typename T>
  8. class Printer
  9. {
  10. public:
  11.    
  12.     void Print(T value)
  13.     {
  14.         std::cout << value << std::endl;
  15.     }
  16.    
  17. };
  18.  
  19. //специализация шаблона для типа string
  20. template<>
  21. class Printer<std::string>
  22. {
  23. public:
  24.     //переопределение функции Print для типа string
  25.     void Print(std::string value)
  26.     {
  27.         std::cout << "___" << value << "___" << std::endl;
  28.     }
  29.    
  30. };
  31.  
  32.  
  33. //теперь нельзя использовать тип double
  34. template<>
  35. class Printer<double>
  36. {
  37.    
  38. };
  39.  
  40.  
  41. int main(int argc, char *argv[])
  42. {
  43.     setlocale(LC_ALL, "Rus");
  44.     srand(time(NULL));
  45.    
  46.    
  47.     Printer<std::string> p;
  48.     p.Print("Текст");
  49.    
  50.     Printer<int> p2;
  51.     p2.Print(1);
  52.    
  53.     Printer<double> p3;
  54.     //p3.Print(1.1);
  55.    
  56.    
  57.     return 0;
  58. }
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement