类与类模板的嵌套
1 /* 嵌套类 与 嵌套类模板 */
2
3 #include<iostream>
4
5 using namespace std;
6
7 // mynewclass 是 myclass 的嵌套类
8 // 嵌套类就是一个类的内部完全实现
9 // 允许无限嵌套
10 // 嵌套类与继承是一样的,母体最后创建 最先销毁 ,子体最先创建最后销毁
11 class myclass
12 {
13 public:
14 myclass()
15 {
16 cout << "myclass new" << endl;
17 }
18
19 ~myclass()
20 {
21 cout << "myclass delete" << endl;
22 }
23 class mynewclass// 嵌套类
24 {
25 public:
26 mynewclass()
27 {
28 cout << "mynewclass new" << endl;
29 }
30
31 ~mynewclass()
32 {
33 cout << "mynewclass delete" << endl;
34 }
35 }my2;
36
37 mynewclass my1;
38 };
39
40 void main()
41 {
42
43 myclass *p = new myclass;
44 delete p;
45
46 cin.get();
47 }
48
49 //---------------------------------------------------------
50
51 /* 嵌套类模板 */
52
53 #include<iostream>
54
55 using namespace std;
56
57 // 类模板内部可以嵌套类
58 template<class T>
59 class A
60 {
61 public:
62 T t;
63
64 A()
65 {
66 cout << "A create" << endl;
67 }
68
69 ~A()
70 {
71 cout << "A delete" << endl;
72 }
73
74 class mynewclass// 嵌套在类模板里面的类
75 {
76 public:
77 mynewclass()
78 {
79 cout << "mynewclass new" << endl;
80 }
81
82 ~mynewclass()
83 {
84 cout << "mynewclass delete" << endl;
85 }
86 }my;
87
88 };
89
90
91
92 void main()
93 {
94 A<double> a;
95
96
97 cin.get();
98 }
99
100 //---------------------------------------------------------
101
102 #include<iostream>
103
104 using namespace std;
105
106 // 类模板内部可以嵌套类 还可以嵌套类模板(实例化的时候必须明确类型,明确母体类模板的类或者已知数据类型)
107 // 类的内部可以嵌套类 可以嵌套类模板(对象必须是已知数据类型)
108
109 class myclass
110 {
111 public:
112 myclass()
113 {
114 cout << "myclass new" << endl;
115 }
116
117 ~myclass()
118 {
119 cout << "myclass delete" << endl;
120 }
121
122 template <class TX>
123 class mynewclass
124 {
125 public:
126 TX tx1;
127 mynewclass()
128 {
129 cout << "mynewclass new" << endl;
130 }
131
132 ~mynewclass()
133 {
134 cout << "mynewclass delete" << endl;
135 }
136 };
137
138 mynewclass<int> my1;
139 };
140
141
142 template<class T>
143 class A
144 {
145 public:
146 T t;
147
148 A()
149 {
150 cout << "A create" << endl;
151 }
152
153 ~A()
154 {
155 cout << "A delete" << endl;
156 }
157
158 template <class TX>
159 class mynewclass// 嵌套在类模板里面的类
160 {
161 public:
162 TX tx1;
163
164 mynewclass()
165 {
166 cout << "mynewclass new" << endl;
167 }
168
169 ~mynewclass()
170 {
171 cout << "mynewclass delete" << endl;
172 }
173 };// 类模板不允许直接在类的实体后定义
174
175 // mynewclass<double> my1;
176 mynewclass<T> my1;
177
178 };
179
180
181
182 void main()
183 {
184
185 myclass my1;
186
187 cin.get();
188 }
长风破浪会有时,直挂云帆济沧海
posted on 2015-06-11 16:06 Dragon-wuxl 阅读(1159) 评论(0) 收藏 举报
浙公网安备 33010602011771号