模板与普通类的多态
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) 收藏 举报
浙公网安备 33010602011771号