亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ch15.htm

?? good book for learning c++ standard language
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
37:          CarPart(USHORT year, ULONG partNumber);
38:          virtual void Display() const 
39:          { 
40:              Part::Display(); 
41:              cout << "Model Year: ";
42:              cout << itsModelYear << endl;  
43:          }
44:       private:
45:          USHORT itsModelYear;
46:       };
47:     
48:       CarPart::CarPart(USHORT year, ULONG partNumber):
49:          itsModelYear(year),
50:          Part(partNumber)
51:       {}
52:     
53: 
54:       // **************** AirPlane Part ************
55:     
56:       class AirPlanePart : public Part
57:       {
58:       public:
59:          AirPlanePart():itsEngineNumber(1){};
60:          AirPlanePart
61:              (USHORT EngineNumber, ULONG PartNumber);
62:          virtual void Display() const
63:          { 
64:              Part::Display(); 
65:              cout << "Engine No.: ";
66:              cout << itsEngineNumber << endl;  
67:          }
68:       private:
69:          USHORT itsEngineNumber;
70:       };
71:     
72:       AirPlanePart::AirPlanePart
73:           (USHORT EngineNumber, ULONG PartNumber):
74:          itsEngineNumber(EngineNumber),
75:          Part(PartNumber)
76:       {}
77:     
78:     // **************** Part Node ************
79:     class PartNode
80:     {
81:     public:
82:        friend class PartsList;
83:        PartNode (Part*);
84:        ~PartNode();
85:        void SetNext(PartNode * node) 
86:            { itsNext = node; }
87:        PartNode * GetNext() const;
88:        Part * GetPart() const;
89:     private:
90:        Part *itsPart;
91:        PartNode * itsNext;
92:     };
93:    
94:       
95:          PartNode::PartNode(Part* pPart):
96:          itsPart(pPart),
97:          itsNext(0)
98:          {}
99:       
100:          PartNode::~PartNode()
101:          {
102:              delete itsPart;
103:              itsPart = 0;
104:              delete itsNext;
105:              itsNext = 0;
106:           }
107:        
108:           // Returns NULL if no next PartNode
109:           PartNode * PartNode::GetNext() const
110:           {
111:                 return itsNext;
112:           }
113:        
114:           Part * PartNode::GetPart() const
115:           {
116:              if (itsPart)
117:                 return itsPart;
118:              else
119:                 return NULL; //error
120:           }
121:        
122:    
123:     // **************** Part List ************
124:     class PartsList
125:     {
126:     public:
127:        PartsList();
128:        ~PartsList();
129:        // needs copy constructor and operator equals!
130:        void     Iterate(void (Part::*f)()const) const;
131:        Part*    Find(ULONG & position, ULONG PartNumber) const;
132:        Part*    GetFirst() const;
133:        void       Insert(Part *);
134:        Part*    operator[](ULONG) const;
135:        ULONG    GetCount() const { return itsCount; }
136:        static    PartsList& GetGlobalPartsList() 
137:                { 
138:                    return  GlobalPartsList;
139:                }
140:     private:
141:        PartNode * pHead;
142:        ULONG itsCount;
143:        static PartsList GlobalPartsList;
144:     };
145:    
146:     PartsList PartsList::GlobalPartsList;
147:    
148:     // Implementations for Lists...
149:    
150:     PartsList::PartsList():
151:        pHead(0),
152:        itsCount(0)
153:        {}
154:    
155:     PartsList::~PartsList()
156:     {
157:        delete pHead;
158:     }
159:    
160:     Part*   PartsList::GetFirst() const
161:     {
162:        if (pHead)
163:           return pHead->itsPart;
164:        else
165:           return NULL;  // error catch here
166:     }
167:    
168:     Part * PartsList::operator[](ULONG offSet) const
169:     {
170:        PartNode* pNode = pHead;
171:    
172:        if (!pHead)
173:           return NULL; // error catch here
174:    
175:        if (offSet > itsCount)
176:           return NULL; // error
177:    
178:        for (ULONG i=0;i<offSet; i++)
179:           pNode = pNode->itsNext;
180:    
181:       return   pNode->itsPart;
182:     }
183:    
184:    Part* PartsList::Find(ULONG & position, ULONG PartNumber) const
185:     {
186:        PartNode * pNode = 0;
187:        for (pNode = pHead, position = 0;
188:              pNode!=NULL;
189:              pNode = pNode->itsNext, position++)
190:        {
191:           if (pNode->itsPart->GetPartNumber() == PartNumber)
192:              break;
193:        }
194:        if (pNode == NULL)
195:           return NULL;
196:        else
197:           return pNode->itsPart;
198:     }
199:    
200:     void PartsList::Iterate(void (Part::*func)()const) const
201:     {
202:        if (!pHead)
203:           return;
204:        PartNode* pNode = pHead;
205:        do
206:           (pNode->itsPart->*func)();
207:        while (pNode = pNode->itsNext);
208:     }
209:    
210:     void PartsList::Insert(Part* pPart)
211:     {
212:        PartNode * pNode = new PartNode(pPart);
213:        PartNode * pCurrent = pHead;
214:        PartNode * pNext = 0;
215:    
216:        ULONG New =  pPart->GetPartNumber();
217:        ULONG Next = 0;
218:        itsCount++;
219:    
220:        if (!pHead)
221:        {
222:           pHead = pNode;
223:           return;
224:        }
225:    
226:        // if this one is smaller than head
227:        // this one is the new head
228:        if (pHead->itsPart->GetPartNumber() > New)
229:        {
230:           pNode->itsNext = pHead;
231:           pHead = pNode;
232:           return;
233:        }
234:    
235:        for (;;)
236:        {
237:           // if there is no next, append this new one
238:           if (!pCurrent->itsNext)
239:           {
240:              pCurrent->itsNext = pNode;
241:              return;
242:           }
243: 
244:           // if this goes after this one and before the next
245:           // then insert it here, otherwise get the next
246:           pNext = pCurrent->itsNext;
247:           Next = pNext->itsPart->GetPartNumber();
248:           if (Next > New)
249:           {
250:              pCurrent->itsNext = pNode;
251:              pNode->itsNext = pNext;
252:              return;
253:           }
254:           pCurrent = pNext;
255:        }
256:     }
257:    
258:     class PartsCatalog : private PartsList
259:     {
260:     public:
261:        void Insert(Part *);
262:        ULONG Exists(ULONG PartNumber);
263:        Part * Get(int PartNumber);
264:        operator+(const PartsCatalog &);
265:        void ShowAll() { Iterate(Part::Display); }
266:     private:
267:     };
268:    
269:     void PartsCatalog::Insert(Part * newPart)
270:     {
271:        ULONG partNumber =  newPart->GetPartNumber();
272:        ULONG offset;
273:    
274:        if (!Find(offset, partNumber))
275:           PartsList::Insert(newPart);
276:        else
277:        {
278:           cout << partNumber << " was the ";
279:           switch (offset)
280:           {
281:              case 0:  cout << "first "; break;
282:              case 1:  cout << "second "; break;
283:              case 2:  cout << "third "; break;
284:              default: cout << offset+1 << "th ";
285:           }
286:           cout << "entry. Rejected!\n";
287:        }
288:     }
289:    
290:     ULONG PartsCatalog::Exists(ULONG PartNumber)
291:     {
292:        ULONG offset;
293:        Find(offset,PartNumber);
294:        return offset;
295:     }
296:    
297:     Part * PartsCatalog::Get(int PartNumber)
298:     {
299:        ULONG offset;
300:        return (Find(offset, PartNumber));
301:    
302:     }
303:    
304:     int main()
305:     {
306:        PartsCatalog pc;
307:        Part * pPart = 0;
308:        ULONG PartNumber;
309:        USHORT value;
310:        ULONG choice;
311:    
312:        while (1)
313:        {
314:           cout << "(0)Quit (1)Car (2)Plane: ";
315:           cin >> choice;
316:    
317:           if (!choice)
318:              break;
319:    
320:           cout << "New PartNumber?: ";
321:           cin >>  PartNumber;
322:    
323:           if (choice == 1)
324:           {
325:              cout << "Model Year?: ";
326:              cin >> value;
327:              pPart = new CarPart(value,PartNumber);
328:           }
329:           else
330:           {
331:              cout << "Engine Number?: ";
332:              cin >> value;
333:              pPart = new AirPlanePart(value,PartNumber);
334:           }
335:           pc.Insert(pPart);
336:        }
337:        pc.ShowAll();
338:       return 0;
<TT>339: }</TT></FONT>
<FONT COLOR="#0066FF">
Output: (0)Quit (1)Car (2)Plane:  1
New PartNumber?: 1234
Model Year?: 94
(0)Quit (1)Car (2)Plane:  1
New PartNumber?: 4434
Model Year?: 93
(0)Quit (1)Car (2)Plane:  1
New PartNumber?: 1234
Model Year?: 94
1234 was the first entry. Rejected!
(0)Quit (1)Car (2)Plane:  1
New PartNumber?: 2345
Model Year?: 93
(0)Quit (1)Car (2)Plane:  0

Part Number: 1234
Model Year: 94

Part Number: 2345
Model Year: 93

Part Number: 4434
Model Year: 93
</FONT></PRE>
<P><FONT COLOR="#000077"><B>Analysis:</B></FONT><B> </B>On line 82, the class <TT>PartsList</TT>
is declared to be a friend to the <TT>PartNode</TT> class. Because <TT>PartsList</TT>
has not yet been declared, the compiler would complain that this type is not known.</P>
<P>This listing places the friend declaration in the public section, but this is
not required; it can be put anywhere in the class declaration without changing the
meaning of the statement. Because of this statement, a

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区精品| 性久久久久久久久| 成人免费三级在线| 中文字幕亚洲成人| 色婷婷综合久久久中文字幕| 一区二区在线电影| 欧美日韩国产一级二级| 日本欧美肥老太交大片| 久久品道一品道久久精品| 国产精品1区2区| 综合激情网...| 91精品国产福利在线观看| 韩国三级电影一区二区| 日韩一区中文字幕| 欧美精品 日韩| 韩国精品一区二区| 18欧美乱大交hd1984| 91精品免费在线观看| 国产剧情一区二区| 亚洲中国最大av网站| 日韩精品中文字幕一区二区三区 | 在线观看国产日韩| 日本中文一区二区三区| 国产人伦精品一区二区| 欧美天堂亚洲电影院在线播放| 裸体健美xxxx欧美裸体表演| 中文字幕一区二区日韩精品绯色| 精品视频色一区| 粉嫩13p一区二区三区| 一区二区三区四区不卡在线| 日韩精品一区二区三区四区| 91丨国产丨九色丨pron| 日本女优在线视频一区二区| 1区2区3区欧美| 精品久久人人做人人爰| 一本色道久久综合精品竹菊| 麻豆国产一区二区| 一区二区三区四区在线| 国产亚洲人成网站| 欧美一级爆毛片| 91黄色小视频| 成av人片一区二区| 97国产一区二区| 国产麻豆日韩欧美久久| 亚洲成人资源网| 1024国产精品| 欧美精品一区二区高清在线观看| 日本高清成人免费播放| 懂色av一区二区在线播放| 美女爽到高潮91| 性做久久久久久免费观看| 亚洲欧美自拍偷拍色图| 国产人伦精品一区二区| 精品国产凹凸成av人网站| 欧洲av一区二区嗯嗯嗯啊| 北岛玲一区二区三区四区| 久久精品久久99精品久久| 亚洲国产wwwccc36天堂| 亚洲另类春色校园小说| 国产精品短视频| 国产日韩欧美一区二区三区乱码 | 91高清视频在线| av不卡一区二区三区| 国产风韵犹存在线视精品| 美女高潮久久久| 蜜桃av噜噜一区| 日本欧美一区二区三区乱码| 亚洲一区二区精品3399| 一区二区三区精品在线| 亚洲精品视频在线| 中文字幕在线一区免费| 亚洲国产精品av| 国产清纯白嫩初高生在线观看91 | 视频一区视频二区中文| 丝袜亚洲另类丝袜在线| 婷婷久久综合九色国产成人| 亚洲国产三级在线| 亚洲v中文字幕| 亚洲国产一区二区a毛片| 亚洲国产精品欧美一二99| 亚洲一区二区三区三| 亚洲成人激情av| 水蜜桃久久夜色精品一区的特点| 无吗不卡中文字幕| 蜜臀av性久久久久av蜜臀妖精| 蜜臀av一区二区在线观看| 麻豆一区二区在线| 国产精品 日产精品 欧美精品| 国产99久久精品| 91在线云播放| 欧美日韩免费一区二区三区| 91精品国产综合久久福利软件 | 国产毛片一区二区| 大桥未久av一区二区三区中文| 成人动漫av在线| 一本久道久久综合中文字幕| 欧美日韩夫妻久久| 欧美大片日本大片免费观看| 久久精品夜夜夜夜久久| 亚洲视频精选在线| 日日摸夜夜添夜夜添国产精品 | 热久久国产精品| 国产精品一区久久久久| 91免费视频网| 日韩一区二区三区免费看| 国产校园另类小说区| 亚洲蜜臀av乱码久久精品| 亚洲成人av一区二区三区| 美日韩一区二区| av综合在线播放| 91精品国模一区二区三区| 久久精品人人做| 亚洲综合久久久| 经典三级在线一区| 色婷婷av一区二区三区软件| 日韩午夜av一区| 最近日韩中文字幕| 日本强好片久久久久久aaa| av一区二区久久| 欧美刺激午夜性久久久久久久| 国产精品高潮久久久久无| 日本aⅴ免费视频一区二区三区| 成人中文字幕在线| 91精品国产91久久综合桃花| 国产精品久久久爽爽爽麻豆色哟哟 | 蜜臀精品一区二区三区在线观看| 不卡高清视频专区| 日韩女优av电影| 亚洲美腿欧美偷拍| 国产精品一区二区你懂的| 欧美精品乱码久久久久久按摩| 中文字幕不卡一区| 久久精品国产99国产| 欧美性色综合网| 国产精品久久毛片a| 激情亚洲综合在线| 欧美日韩你懂得| 亚洲欧美日韩久久| 国产不卡视频在线播放| 日韩欧美久久久| 亚洲18色成人| 色国产精品一区在线观看| 国产精品嫩草影院av蜜臀| 久久精品国产精品亚洲红杏| 欧美另类高清zo欧美| 亚洲激情五月婷婷| 成人av在线播放网站| 国产亚洲va综合人人澡精品 | 中文字幕欧美激情一区| 精品一区二区三区在线观看国产| 欧美视频一区在线| 亚洲免费观看高清完整版在线观看熊| 国产999精品久久| 久久精品综合网| 激情小说亚洲一区| 欧美大片日本大片免费观看| 日韩成人dvd| 欧美一区二区三区公司| 香蕉成人啪国产精品视频综合网| 在线中文字幕不卡| 亚洲蜜臀av乱码久久精品蜜桃| 91在线观看污| 亚洲免费在线视频| 91片在线免费观看| 亚洲日本电影在线| 一本在线高清不卡dvd| 伊人性伊人情综合网| 欧洲精品中文字幕| 亚洲国产你懂的| 91精品国产综合久久久久久| 奇米一区二区三区av| 日韩三区在线观看| 韩国一区二区三区| 国产视频一区不卡| 成人av综合一区| 性做久久久久久久久| 裸体健美xxxx欧美裸体表演| 欧洲av一区二区嗯嗯嗯啊| 亚洲综合色视频| 日韩欧美亚洲另类制服综合在线| 亚洲色图制服诱惑 | 亚洲电影一区二区三区| 久久久综合视频| 欧美视频一区在线| 从欧美一区二区三区| 日韩av中文字幕一区二区三区| 国产三级精品视频| 制服丝袜国产精品| a亚洲天堂av| 国内国产精品久久| 亚洲国产毛片aaaaa无费看 | 久久久www成人免费毛片麻豆| 欧日韩精品视频| 成人av免费观看| 免费不卡在线观看| 亚洲一二三区在线观看| 国产精品久久夜| 精品对白一区国产伦| 欧美精品久久久久久久多人混战| 北岛玲一区二区三区四区|