2 C H A P T E R C++ «i o r o r r y r e «ˆ Û Ã ¾É t v ô Ãd C++ à t «È ÄÕx v C++ ÃÊh 2.1! t 2.2! ô à C++ 2.3! Borland C++ ê «v 2.4! Visual C++.NET 2.5! ô C++ 2.6! C++ m à Π2.7! t ð 2.8! t
2.1 n ~á CPU q ˆ ~ µƒã î ˆ C++ à nù eô 1. (edit) 2. Í (preprocess) 3. (compile) 4. (link) 5. (load) 6. ˆ (execute) µl ô Ãs nù (editor) Í (preprocessor) (compiler) (linker) «(loader) lf ƒ þ (the Standard C++ Library) «MFC ( Œ the Microsoft Foundation Classes) dzã þ n à ôs v (editor) i à à ƒ C++ i Ùmá (source code)» ¹ k CD-R µ CD-RW C++ à ƒ.cpp òŠ (extension) ~ UNIX ôƒ emacs «vi ol v ~ô Windows ovã» ô v Microsoft Visual C++ µ Borland C++ Builder à Πnùƒ vãã v«r zƒãì n î v (compiler) áwã (object code) ~ ˆ Í ƒ ôp Í (preprocessor) à 2-2
! C++ q» s pv ˆ r dãí Ùm (preprocessor directives) ˆ Íà nù á (header file) Ãi lf~ ªmÜ Ãi ~l à ô ÛÃd vãí Ùm à ¹Î ~ ñ (compiler) Ãn ~¹ Í vã ( á d translation unit) áwã (object file) ˆ ¾ Ý«fà á fã î Ü Ãµ vã Û ô à (assembly code) Ö «p (assembler) vwã wã ô Ùm«Ã qûå (relative address)û (absolute address) ÖÃÞ á (linking)g hv Û l à kþ dõãµ ˆ à þ (linker) Ã Û wã ~Ù Ã Ã ˆ (executable file) rˆ å á à l UNIX á îô á test.c à ïí «Ã ôqî~ m x (command line) à x (prompt) Ö cc test.c Ø (y Enter ) o»œƒ ol n ô á a.out à ˆ»Û v 2.4d à Borland C++ Compiler Î ¹ Test.cpp à qî~ DOS à m x Ö bcc32 test Ø (Enter) o nã~ xxl à n 2-3
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland Test.CPP Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland ~ µ~ã d v Test.obj Test.tds «Test.exe ô Test.exe Û ôîã ˆ Û ~ UNIX DOS Û Windows Í «Ã ~ à Ùm Ê~áÙm µ Ù Ã «þ vä ô à ~ n u ~ˆÍ î (loader) à o ˆ (executable code ïã a.out «Test.exe) ¹ld ~Ü ô à nù (DLL Dynamically Linked Libraries ƒ.dll) Ãn ïã ol 2.1.1 à x Ü ª õ Œ Ÿë ª ã 2.1.1! C++ à 2-4
! C++ q» s DLL Û ô à ol ˆ e lë¹ µã~ ˆ à ˆŒ ¹ È ~ƒº µõu î qîªm z ˆ ol î ˆ à «ˆ Ö v ïã ~ UNIX ÃÙmÛ a.out ~ DOS Îqî µ test.exe test Ø o»î t ~ xxã» ô á Result.txt à d ~ DOS q î~ «ˆ ~ ˆ Öñn > n ol test > Result.txt 2.2 á C++ n C++ à ¾ ¹ ô à ƒ ôî ~t d ôê Ûoln C++ ¾ µ«ã ôö ˆ ~ xx ˆi l Û Ã // Test.cpp // ÃwÃÛ~ xx ˆi 2-5
// -- l z --------------------- cout << "Hello,!" // lîã ï ô nù Í Ùmlf l ô z 1. (comments) ~ à zû Ãz // Test.cpp // ÃwÃÛ~ xx ˆi // -- l z --------------------- cout << "Hello,!" // lîã ï Ûn¹ dã ¹i ~ à ô à ˆ dû à ôðîã z wã 1. ~ ô à Þi l ¹ wã vi lfõ i lë¹iö Ý 2. m ¹ «ˆ Ãdz lf v ý 3. Þ Ã eä ü¹ 2-6
! C++ q» s 4. ~á ÃiË oãü z ol v à z ol Œ Ãð ƒ ¾ 1. // Ãp à ˆ á 2. l /* à */ µnùãi µ á ~ ï Ãz ol /* Test.cpp ÃwÃÛ~ xx ˆi */ /* -- l z ---------------*/ cout << "Hello,!" /* lîã ï */ 4 Ãwà ( Û Ãî ˆ á ) r ô vã ¾ 2. Í Ùm (preprocessor directives) ~ à zû Í (preprocessor) ÙmÃ~ i áí Ùm // Test.cpp // ÃwÃÛ~ xx ˆi 2-7
// -- l z --------------------- cout << "Hello,!" // lîã ï l # ÃÙmˆ~ Í víˆ ôí Ùm s Š xã ˆÙm t à Ûî / n ß Ã (header file) <iostream> nù ñ lh å à þ ~t Û ô v cout endl «<< ñhvãå dz s «µù à þ ë v u ÃÛ C++ Ãðîd ôþã v ~É C ië Ä Ùmˆ á using Ó (using declaration) ¹ cout «endl Û Ä std à dz~ v std Û standard ( ) Ã Ä (namespace) Û C++ Ãà wãûá Œe Ö Ã Ñ v ð à ô ~ d Í Ùm Ö~ e d Ä 3. l ~ à zû Ãl z // Test.cpp // ÃwÃÛ~ xx ˆi 2-8
! C++ q» s // -- l z --------------------- cout << "Hello,!" // lîã ï ~ main Öà ٠() Èx main Û ô à d á (function) C++ o ƒ ôµ ôlã q ƒ ôp main á ~ ï main Û ô ô~l à ¹ main() main() Û Û ôn Ã Û main() ˆ ~ main() s à int Èx main() à ˆ»~ ôint Û integer ( ) à (key word) Û C++ ¾dÃË ƒ à ol ~ main() Öñà ٠µ à zû ô Ãt z (function body) ô ~ e d à ¾ ~ Ù dãùm cout << "Hello,!" Û ô C++ lîãwã ÃÙm á ï (statement) ô ï Ûle ; á ~ ô n ï "Hello,!" á ô v <<ô Ãn dû x 2-9