Advertisement
wintest

TEMPLATE и Файлове

May 29th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.43 KB | None | 0 0
  1. <pre><div class="text_to_html">#pragma once
  2. #include<iostream>
  3. //10.   ��������� ���� � ���� - ����� �� ��������
  4. //char � double � ������������ ���� - �������,
  5. //���� �� ����� ����� �� ����� �� ���� �� ��
  6. //�������� ��������� -
  7. //������ �� ���. 9 � ������ ����.
  8. template <typename T> class TstClass{
  9. private:
  10.     T * arr;
  11.     size_t sz;
  12.  
  13. public:
  14.     //big 5
  15.     TstClass(T * = NULL, size_t = 0);
  16.     ~TstClass();
  17.     TstClass(const TstClass&);
  18.     TstClass& operator =(const TstClass&);
  19.  
  20.     T& operator [](size_t);
  21.     //inserter and extractor
  22.     std::ostream& insOut(std::ostream&) const;
  23.     std::istream& extrIn(std::istream&);
  24.  
  25. };
  26.  
  27.  
  28. //class
  29. template <typename T>
  30. TstClass<T>::TstClass(T * arrName, size_t sz)
  31.     :arr(new T[sz]), sz(sz){
  32.     for (size_t i = 0; i < sz; i++)
  33.     {
  34.         arr[i] = arrName[i];
  35.     }
  36. }
  37.  
  38. template <typename T>
  39. TstClass<T>::~TstClass(){
  40.     delete[] arr;
  41. }
  42.  
  43. template <typename T>
  44. TstClass<T>::TstClass(const TstClass& right)
  45. :sz(right.sz),arr(new T[sz]){
  46.  
  47.     for (size_t i = 0; i < sz; i++)
  48.     {
  49.         arr[i] = right.arr[i];
  50.     }
  51. }
  52.  
  53. template <typename T>
  54. TstClass<T>& TstClass<T>::operator =(const TstClass<T>& right){
  55.     if (this != &right){
  56.         sz = right.sz;
  57.         for (size_t i = 0; i < sz; i++)
  58.         {
  59.             arr[i] = right.arr[i];
  60.         }
  61.     }
  62.     return *this;
  63. }
  64.  
  65. template <typename T>
  66. T& TstClass<T>::operator [](size_t index){
  67.     if (index>0 || index < sz){
  68.         return arr[index];
  69.     }
  70.     else{
  71.         std::cerr << "Wrong index!" << std::endl;
  72.         return 0;
  73.     }
  74. }
  75.  
  76. //inserter and extractor
  77. template <typename T>
  78. std::ostream& TstClass<T>::insOut(std::ostream& out) const{
  79.     out << "(" << arr[0];
  80.     for (size_t i = 1; i < sz; i++)
  81.     {
  82.         out << ", " << arr[i];
  83.     }
  84.     return out << ")";
  85. }
  86.  
  87. template <typename T>
  88. std::istream& TstClass<T>::extrIn(std::istream& in){
  89.     for (size_t i = 0; i < sz; i++)
  90.     {
  91.         in >> arr[i];
  92.     }
  93.     return in;
  94. }
  95.  
  96.  
  97. //�������� ���a�� �������� ����-�����
  98. template<class T>
  99. std::ostream& operator <<(std::ostream& out,
  100.     const TstClass<T> &object){
  101.     return object.insOut(out);
  102. }
  103. template<class T>
  104. std::istream& operator >>(std::istream& in,
  105.     TstClass<T>& object){
  106.     return object.extrIn(in);
  107. }</div></pre>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement