Advertisement
Ejejejejejjr

Наследовании шаблонов классов

Jan 1st, 2021
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4.  
  5.  
  6.  
  7. template<typename T1, typename T2>
  8. class DataType
  9. {
  10.    
  11. public:
  12.     DataType(T1 value1, T2 value2)
  13.     {
  14.         this->value1 = value1;
  15.         this->value2 = value2;
  16.     }
  17.    
  18.     void DataTypeSize()
  19.     {
  20.         std::cout << "Значение " << value1 << " занимает " << sizeof(value1) << " байта" << std::endl;
  21.         std::cout << "Значение " << value2 << " занимает " << sizeof(value2) << " байта" << std::endl;
  22.     }
  23.    
  24. protected:
  25.     T1 value1;
  26.     T2 value2;
  27.    
  28. };
  29.  
  30.  
  31. template<typename PT1, typename PT2>
  32. class TypeInfo : public DataType<PT1, PT2>
  33. {
  34. public:
  35.    
  36.     TypeInfo(PT1 Pvalue1, PT2 Pvalue2) : DataType<PT1, PT2>(Pvalue1, Pvalue2)
  37.     {
  38.        
  39.     }
  40.    
  41.     void ShowTypeName()
  42.     {
  43.         std::cout << "Тип данных значения " << this->value1 << " - " << typeid(this->value1).name() << std::endl;
  44.         std::cout << "Тип данных значения " << this->value2 << " - " << (typeid(this->value2).name()) << std::endl;
  45.     }
  46.    
  47. };
  48.  
  49.  
  50.  
  51. int main(int argc, char *argv[])
  52. {
  53.     setlocale(LC_ALL, "Rus");
  54.     srand(time(NULL));
  55.    
  56.  
  57.     TypeInfo<int, std::string> dt(5.99, "пять");
  58.    
  59.     dt.DataTypeSize();
  60.     std::cout << "\n\n";
  61.     dt.ShowTypeName();
  62.    
  63.     return 0;
  64. }
  65.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement