模板与普通类的多态

 1 /* 模板与普通类的多态 */
 2 
 3 #include<iostream>
 4 
 5 using namespace std;
 6 
 7 // 类继承于类模板
 8 
 9 // 类模板继承于类,仍然存在多态机制
10 
11 
12 class myclass
13 {
14 public:
15     int x;
16     int y;
17 
18     //----------------------------------------
19     // 注释这段代码添加virtual void print() = 0;
20     // 此时为抽象类,对结果没影响
21     virtual void print()
22     {
23         cout << "virtual void print()" << endl;
24     }
25     //----------------------------------------
26 
27 };
28 
29 
30 template<class T>
31 class newclass:public myclass
32 {
33 public:
34     newclass()
35     {
36         a = 0;
37     }
38 
39     T a;
40     void print()
41     {
42         cout << typeid(*this).name() << endl;
43         cout << a << " " << x << " " << y << endl;
44     }
45 };
46 
47 void main()
48 {
49     
50     myclass *p = new newclass<double>;
51     p->x = 10.1;
52     p->y = 20.1;
53     p->print();
54 
55 
56     cin.get();
57 }
58 
59 
60 
61 //-------------------------------------------------------------------
62 
63 template<class T>
64 class Tclass
65 {
66 public:
67     T a;
68     T b;
69     virtual void print() = 0;
70     
71 };
72 
73 
74 class Nclass:public Tclass<double>
75 {
76 public:
77     void print()
78     {
79         cout << a << " " << b << endl;
80     }
81 };
82 
83 // 类继承于类模板存在多态机制
84 void main()
85 {
86     Tclass<double> *p = new Nclass;
87     p->a = 12.8;
88     p->b = 20.8;
89     p->print();
90 
91 
92     cin.get();
93 }

 

posted on 2015-06-12 12:25  Dragon-wuxl  阅读(96)  评论(0)    收藏  举报

导航