码迷,mamicode.com
首页 > 编程语言 > 详细

C++ Template Operator

时间:2015-02-10 10:58:32      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include <iostream>
 2 #include <string>
 3 #include <deque>
 4 #include <stdexcept>
 5 template <typename T>
 6 class my_stack
 7 {
 8 private:
 9     std::deque<T> elems;
10 public:
11     void push(T const &);
12     void pop();
13     T top()const;
14     bool empty()const{return elems.empty();}
15     //operator = 
16     template <typename T2>
17     my_stack<T> & operator=(my_stack<T2> const&);
18 };
19 
20 template <typename T>
21 void my_stack<T>::push(T const &elem)
22 {
23     elems.push_back(elem);
24 }
25 
26 template <typename T>
27 void my_stack<T>::pop()
28 {
29     if (this->empty())
30     {
31         throw std::out_of_range("the list is empty,please insert the elems\n");
32     }
33     elems.pop_back();
34 }
35 template <typename T>
36 T my_stack<T>::top()const
37 {
38     if(this->empty())
39     {
40         throw std::out_of_range("No elements\n");
41 
42     }
43     return elems.back();
44 }
45 template <typename T>
46 template <typename T2>
47 my_stack<T>& my_stack<T>::operator=(my_stack<T2> const&op2)
48 {
49     if( (void*)this == (void *)&op2)
50     {
51         return *this;
52     }
53     my_stack<T2> tmp(op2);   //copy constructor
54     elems.clear();
55     while(!tmp.empty())
56     {
57         elems.push_front(tmp.top());  //put in the front !...
58         tmp,pop();    // while loop breakdown
59     }
60     return *this;
61 }
62 
63 int main()
64 {
65     my_stack <int> int_stack;
66     my_stack <float> float_stack;
67 
68     float_stack = int_stack;
69     
70     return 0;
71 }

 

C++ Template Operator

标签:

原文地址:http://www.cnblogs.com/gearslogy/p/4283203.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!