Tempale Intro

612 views
551 views

Published on

Введение в шаблоны. Шаблоны функций, классов, методов.

Published in: Education, Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
612
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tempale Intro

  1. 1. Язык C++ Использование шаблонов templates Алексей Бованенко пятница, 8 января 2010 г.
  2. 2. Создание шаблонной функции • template<typename T> bool testFunc( const T& t1, const T& t2) { if(t1>t2) return true; return false; } пятница, 8 января 2010 г.
  3. 3. Результат использования функции пятница, 8 января 2010 г.
  4. 4. Создание шаблонного класса • template<typename T> class TestContainer{ public: TestContainer():count(0),arr(0){ arr=new T[10]; } ~TestContainer(){ if(arr) delete[] arr; } пятница, 8 января 2010 г.
  5. 5. Создание шаблонного класса (продолжение) • void add(T e){ arr[count++]=e; } T get(int index){ return arr[index]; } private: int count; T* arr; пятница, 8 января 2010 г.
  6. 6. Результат пятница, 8 января 2010 г.
  7. 7. Шаблонные параметры, не являющиеся типами  template <typename T, int SIZE> class TestClass{ public: TestClass(){}; ~TestClass(void){}; private: T arr[SIZE]; }; пятница, 8 января 2010 г.
  8. 8. Значения по умолчанию для целочисленных шаблонных параметров  template <typename T, int SIZE=10> class TestClass{ public: TestClass(){}; ~TestClass(void){}; private: T arr[SIZE]; }; пятница, 8 января 2010 г.
  9. 9. Использование шаблона  TestClass<int> tc;  TestClass<std::string, 100> tc1; пятница, 8 января 2010 г.
  10. 10. Шаблоны методов  template <typename T, int SIZE=10> class TestClass{ public: TestClass(){}; ~TestClass(void){}; template<typename E> size_t get(E& e) { return sizeof(e); }; private: T arr[SIZE]; пятница, 8 января 2010 г.
  11. 11. Пример использования  TestClass<int,10> t1;  std::string s="Helloo, world";  int sz=t1.get(s);  std::cout<<sz<<std::endl; пятница, 8 января 2010 г.
  12. 12. Конец Спасибо за внимание e-mail: a.bovanenko@gmail.com пятница, 8 января 2010 г.

×