E-knjižnica. C univerzalna evolucija

Zašto C++

C++ se trenutno smatra dominantnim jezikom koji se koristi za razvoj komercijalnih softverskih proizvoda. U posljednjih godina ova dominacija je malo poljuljana sličnim tvrdnjama iz programskog jezika kao što je Java, ali njihalo javnog mnijenja zamahnulo je u suprotnom smjeru, a mnogi programeri koji su napustili C++ radi Jave nedavno su se vratili svojoj prijašnjoj naklonosti. U svakom slučaju, ova dva jezika su toliko slična da učenjem jednog od njih automatski savladavate 90% drugog.

C# je novi jezik, koju je razvio Microsoft za mrežnu platformu. U suštini, C# je vrsta C++, a unatoč nizu temeljnih razlika, jezici C# i C++ podudaraju se za oko 90%. Vjerojatno će proći dosta vremena prije nego što C# postane ozbiljan konkurent C++-u; ali čak i ako jest, poznavanje jezika C++ bit će značajna prednost.

C++ je programski jezik opće namjene. Njegov prirodni opseg je programiranje sustava, shvaćeno u najširem smislu riječi. Osim toga, C++ se uspješno koristi u mnogim područjima primjene koja daleko nadilaze specificirani opseg. C++ implementacije su sada na svakom stroju, od najskromnijeg mikroračunala do najvećeg superračunala, i za gotovo sve operativne sustave.

Pojava i evolucija jezika C++

Bjorn Stroustrup je programer jezika C++ i tvorac prvog prevoditelja. Zaposlenik je AT&T Bell Laboratories Research Computing Centra u Murray Hillu (New Jersey, SAD). Magistrirao je matematiku i računalno inženjerstvo na Sveučilištu Aarus (Danska), a doktorirao računarstvo na Sveučilištu Cambridge (Engleska). Specijalizirao se za distribuirane sustave, operacijske sustave, modeliranje i programiranje. Zajedno s M. A. Ellisom, on je autor kompletan vodič na jeziku C++ - "Vodič za C++ s bilješkama".

Naravno, C++ mnogo duguje jeziku C, koji je sačuvan kao njegov podskup. Spašena i sva sredstva svojstvena C niska razina dizajniran za rješavanje najhitnijih problema programiranja sustava. C, pak, mnogo duguje svom prethodniku, BCPL-u. Komentar BCPL jezika vraćen je na C++. Drugi izvor inspiracije bio je jezik SIMULA-67; od njega je posuđen koncept klasa (zajedno s izvedenim klasama i virtualnim funkcijama). Sposobnost C++-a da preopterećuje operatore i sloboda postavljanja deklaracija gdje god se operator može pojaviti podsjeća na jezik Algol-68.

Ranije verzije jezika, nazvane "C s klasama", bile su u upotrebi počevši od 1980. Ovaj jezik je nastao jer je autor trebao napisati programe simulacije vođene prekidima. Za to je, osim učinkovitosti, idealan jezik SIMULA-67. Jezik "C s klasama" korišten je za velike zadatke modeliranja. U to vrijeme su mogućnosti pisanja programa na njemu, za koje su vremenski i memorijski resursi kritični, podvrgnute rigoroznom testiranju. Ovom jeziku nedostajalo je preopterećenje operatora, reference, virtualne funkcije i mnoge druge značajke. C++ je prvi put napustio istraživačku grupu u kojoj je autor radio u srpnju 1983., ali u to vrijeme mnoge značajke C++ još nisu bile razvijene.

Naziv C++ (C plus plus) skovao je Rick Maschitti u ljeto 1983. Ovaj naziv odražava evolucijsku prirodu promjena u jeziku C. Oznaka ++ odnosi se na operaciju povećanja C. Nešto kraći naziv C+ je sintaktička greška. Osim toga, već se koristio kao naziv za potpuno drugačiji jezik. Semantičari C-a smatraju da je C++ gori od ++C-a. Jezik se ne zove D jer je proširenje C-a i ne pokušava riješiti nikakve probleme ispuštanjem značajki C. Još jedno zanimljivo tumačenje imena C++ može se naći u dodatku .

U početku je C++ zamišljen tako da autor i njegovi prijatelji ne moraju programirati na asembleru, C ili nekom drugom moderni jezici visoka razina. Njegova glavna svrha je pojednostaviti i učiniti ugodnijim proces programiranja za pojedinog programera. Donedavno na papiru nije postojao razvojni plan za C++. Dizajn, implementacija i dokumentacija išli su ruku pod ruku. Nikada nije postojao "C++ projekt" ili "C++ Design Committee". Stoga je jezik evoluirao i razvija se na način da prevlada sve probleme s kojima su se korisnici susretali. Poticaj razvoja služe i razgovori autora o svim problemima sa svojim prijateljima i kolegama.

Od objavljivanja prvog izdanja ove knjige, jezik C++ doživio je značajne promjene i usavršavanja. Ovdje se uglavnom radi o razjašnjavanju preopterećenja, povezivanju i upravljanju memorijom. Međutim, napravljene su manje promjene kako bi se povećala kompatibilnost s jezikom C. Uvedene su i neke generalizacije i značajna proširenja, kao što su višestruko nasljeđivanje, funkcije članova sa statičkim i konst specifikacijama, zaštićeni članovi (zaštićeni), predlošci tipa i posebno rukovanje situacije. Sva ova proširenja i poboljšanja bila su usmjerena na to da C++ postane jezik u kojem se mogu kreirati i koristiti knjižnice. Sve promjene su opisane u .

Ostala proširenja uvedena između 1985. i 1991. godine (kao što su višestruko nasljeđivanje, funkcije statičkih članova i čiste virtualne funkcije) proizašle su iz generalizacija iskustva programiranja C++, a ne iz drugih jezika.

Jezična proširenja napravljena tijekom ovih šest godina prvenstveno su bila usmjerena na povećanje izražajnosti C++ kao jezika apstrakcije podataka i objektno orijentiranog programiranja općenito te kao sredstva za stvaranje visokokvalitetnih knjižnica s posebno korisničkim definiranim tipovima podataka.

Oko 1987. postalo je očito da je rad na standardizaciji C++ neizbježan i da temelj za njega treba započeti odmah.

AT&T Bell Laboratories dao je glavni doprinos ovom radu. Oko 100 predstavnika iz 20-ak organizacija proučavalo je i komentiralo ono što je postalo moderna verzija referentnog vodiča i početni materijali za ANSI standardizaciju. C++. Konačno, na inicijativu Hewlett-Packarda, u prosincu 1989. godine, unutar ANSI-ja formiran je Odbor X3J16. Očekuje se da će rad na standardizaciji C++ u ANSI (American Standard) postati sastavni dio normizacijskog rada ISO (International Standards Organization).

C++ je evoluirao zajedno s razvojem nekih od osnovnih klasa.

Fokus knjige je na općim ciljevima dizajna, evoluciji jezika od izvornog projekta "C with Classes" do stanje tehnike te opisivanje razvoja jezičnih pojmova. Stroustrup je u knjizi također detaljno pokazao vezu između C ++ i jezika Simula.

Ideja da se napiše rad o povijesti C++-a predložena je Stroustrupu na drugoj ACM konferenciji o povijesti programskih jezika 1993. (ACM HOPL-2). Interes drugih potaknuo ga je na ozbiljniji rad i do 1994. godine napisana je cijela knjiga.

vidi također

Napišite recenziju na temu "Dizajn i evolucija C++-a"

Bilješke

Linkovi

  • Bjarne Stroustrup.(Engleski) . - Početna stranica AT&T Stroustrupa. Preuzeto 18. kolovoza 2009. .
  • Francis Glassborough.(Engleski) (veza nedostupna - povijesti) (svibanj 1994.). - Ogledalo ACCU stranice, nije ažurirano od 2000. Preuzeto 18. kolovoza 2009. .

Izvod koji karakterizira dizajn i evoluciju C++-a

Rostov, na brežuljku, zaustavi konja na trenutak da ispita što se radi; ali koliko god je naprezao svoju pažnju, nije mogao ni razumjeti ni razabrati ništa od onoga što se radi: neki ljudi su se kretali tamo u dimu, neka platna vojske kretala su se sprijeda i straga; ali zašto? tko? gdje? nije se moglo razumjeti. Taj prizor i ti zvuci ne samo da u njemu nisu budili nikakav tup ili plašljiv osjećaj, nego su mu, naprotiv, davali energiju i odlučnost.
"Pa, još, daj mi još!" - mentalno se okrenuo na te zvukove i opet počeo galopirati duž crte, prodirući sve dalje i dalje u područje postrojbi koje su već stupile u akciju.
“Ne znam kako će tamo biti, ali sve će biti u redu!” pomisli Rostov.
Prošavši neku vrstu austrijskih trupa, Rostov je primijetio da je sljedeći dio linije (to je bila straža) već stupio u akciju.
„Utoliko bolje! Pogledat ću izbliza, pomislio je.
Otišao je skoro do prve crte bojišnice. Nekoliko jahača galopiralo je prema njemu. To su bili naši Life Lanceri, koji su se vraćali iz napada u neuređenim redovima. Rostov ih je prošao, nehotice primijetio jednog od njih u krvi i pojurio dalje.
– Nije me briga za to! on je mislio. Prije nego što je otišao nekoliko stotina koraka nakon toga, lijevo od njega, ispred njega, pojavila se po cijelom polju ogromna masa konjanika na crnim konjima, u sjajnim bijelim odorama, koji su kaskali ravno na njega. Rostov je postavio svog konja u puni galop kako bi se maknuo s puta ovim konjanicima, a ostavio bi ih da su i dalje hodali istim hodom, ali su oni nastavili ubrzavati, tako da su neki konji već galopirali. Rostov je postajao sve čujniji njihov zveket i zveckanje oružja, a njihovi konji, figure, pa čak i lica postajali su vidljiviji. To su bile naše konjičke garde koje su napadale francusku konjicu koja je napredovala prema njima.
Straža konjanika galopirala je, ali i dalje držala konje. Rostov je već vidio njihova lica i čuo zapovijed: "Marš, marš!" izgovorio časnik koji je u punom zamahu pustio svog krvavog konja. Rostov, bojeći se da ne bude slomljen ili namamljen u napad na Francuze, galopirao je prednjim dijelom, koji je bio urin njegovog konja, i još uvijek nije imao vremena proći ih.
Ekstremni konjički gardista, golemi, bodljikavi čovjek, ljutito se namrštio kad je pred sobom ugledao Rostova s ​​kojim bi se neminovno sudario. Ova bi konjička garda zasigurno srušila Rostov sa svojim beduinom (i sam se Rostov činio tako malenim i slabim u usporedbi s tim ogromnim ljudima i konjima), da nije pogodio mahati bičem u oči konju konjičke straže. Crni, teški konj od pet inča pobjegao je, položivši uši; ali šipava konjanička straža zabila joj je goleme ostruge u bokove, a konj je, mašući repom i ispruživši vrat, jurio još brže. Čim je konjička garda prošla Rostov, začuo je njihov povik: "Ura!" i pogledavši oko sebe, vidio je da su im prvi redovi pomiješani sa strancima, vjerojatno francuskim, konjanicima u crvenim epoletama. Dalje se nije moglo ništa vidjeti, jer su odmah nakon toga odnekud počeli pucati topovi, a sve je bilo prekriveno dimom. Bjorn Stroustrup - Dizajn i evolucija C++-a.
Izdavač: DMK Press, Peter, 2006
ISBN 5-469-01217-4
Stranice: 445

Kvaliteta: 300 dpi

Format: djvu

Veličina: 2,9 Mb

Od izdavača

Ova knjiga koju je napisao tvorac jezika C++, Bjarne Stroustrup, opisuje proces dizajniranja i razvoja programskog jezika C++. U njemu su navedeni ciljevi, principi i praktična ograničenja koja su oblikovala strukturu i oblik C++-a te se raspravlja o dizajnu nedavno dodanih značajki jeziku: predlošci, iznimke, identifikacija tipa tijekom izvođenja i prostori imena. Autor analizira odluke donesene tijekom rada na jeziku i pokazuje kako pravilno primijeniti "pravi objektno orijentirani programski jezik". Knjiga je dobro organizirana, poučna i napisana s humorom.

Opis ključne ideje dat će korisniku početniku osnovu na kojoj će kasnije graditi svoje razumijevanje svih pojedinosti jezika. Iskusni programer ovdje će pronaći raspravu o temeljnim pitanjima dizajna koja će mu omogućiti bolje razumijevanje jezika s kojim radi.

Dizajn i evolucija C++ - Stroustrup B. - 2006.

Ova knjiga koju je napisao tvorac jezika C++, Bjarne Stroustrup, opisuje proces dizajniranja i razvoja programskog jezika C++.
U njemu su navedeni ciljevi, principi i praktična ograničenja koja su oblikovala strukturu i oblik C++-a te se raspravlja o dizajnu nedavno dodanih značajki jeziku: predlošci, iznimke, identifikacija tipa tijekom izvođenja i prostori imena. Autor analizira odluke donesene tijekom rada na jeziku i pokazuje kako pravilno primijeniti "pravi objektno orijentirani programski jezik".
Knjiga je dobro organizirana, poučna i napisana s humorom. Opisivanje ključnih ideja dat će korisniku početniku osnovu na kojoj će kasnije graditi svoje razumijevanje svih pojedinosti jezika. Iskusni programer ovdje će pronaći raspravu o temeljnim pitanjima dizajna koja će mu omogućiti bolje razumijevanje jezika s kojim radi.

Predgovor
Hvala
Obraćanje čitatelju
dio I
Poglavlje 1. Prapovijest C++
1.1. Simulalni jezik i distribuirani sustavi
1.2. C jezik i programiranje sustava
1.3. Malo o autoru knjige
2. Poglavlje Jezik C s razredima
2.1. Rođenje s razredima
2.2. Pregled jezičnih opcija
2.3. Nastava
2.4. Učinkovitost izvršenja
2.4.1. Ugradnja
2.5. model rasporeda
2.5.1. Jednostavne implementacije
2.5.2. Model smještaja objekata u memoriji
2.6. Statička provjera tipa
2.6.1. Sužavanje transformacija
2.6.2.0 Prednosti upozorenja
2.7. Zašto C?
2.8 Sintaktički problemi
2.8.1. Sintaksa deklaracije u jeziku C
2.8.2. Oznake strukture i nazivi tipova
2.8.3. Važnost sintakse
2.9. Izvedene klase
2.9.1. Polimorfizam bez virtualnih funkcija
2.9.2. Klase kontejnera bez predložaka
2.9.3. Model smještaja objekata u memoriji
2.9.4. retrospektivno
2.10. Model zaštite
2.11. Jamstva za vrijeme rada
2.11.1. Konstruktori i destruktori.
2.11.2. Dodjela memorije i konstruktori.
2.11.3. funkcije poziva i povratka.
2.12. Manje značajna sredstva.
2.12.1. Preopterećenje operatora dodjele
2.12.2. Zadani argumenti
2.13. Što nije implementirano u C s klasama
2.14. Radno okruženje.
Poglavlje 3 Rođenje C++-a
3.1. Od C s klasama do C++.
3.2. C++ ciljevi
3.3. Cfront kompajler
3.3.1. Generiranje C koda
3.3.2. Parsing C++
3.3.3. Problemi s izgledom
3.3.4. Cfront verzije.
3.4. Jezične značajke
3.5. Virtualne funkcije
3.5.1. Model smještaja objekata u memoriji
3.5.2. Zamjena i traženje odgovarajuće virtualne funkcije
3.5.3. Skrivanje članova osnovne klase.
3.6. Preopterećenje
3.6.1. Osnove preopterećenja.
3.6.2. Članske funkcije i funkcije prijatelja
3.6.3. Funkcije operatera
3.6.4. Preopterećenje i učinkovitost
3.6.5. Promjena jezika i novi operatori
3.7. Linkovi
3.7.1. lvalue i rvalue
3.8. Konstante.
3.9. Upravljanje memorijom
3.10. Kontrola tipa
3.11. Sekundarne prilike
3.11.1. Komentari
3.11.2. Zapis za konstruktore
3.11.3. Kvalifikacija.
3.11.4. Inicijalizacija globalnih objekata
3.11.5. Oglasne ponude
3.12. C i C++ jezici.
3.13. Alati za oblikovanje jezika
3.14. Knjiga "Programski jezik C++".
3.15. Članak "Što je?"
Poglavlje 4 C++ pravila dizajna
4.1. Pravila i principi
4.2. Opća pravila.
4.3. Pravila podrške dizajnu,
4.4. tehnička pravila.,
4.5. Pravila podrške programiranju niske razine
4.6. Završna riječ
Poglavlje 5 Vremenska traka 1985-1993
5.1. Uvod
5.2. Verzija 2.0
5.2.1. Pregled mogućnosti.
5.3. Opisani referentni vodič.
5.3.1. ARM pregled
5.4. ANSI i ISO standardizacija
5.4.1. Pregled mogućnosti.
Poglavlje 6 Standardizacija.
6.1. Što je standard? .
6.1.1. Detalji implementacije
6.1.2. Test realizma
6.2. Rad odbora.
6.2.1. Tko radi u komisiji
6.3. Kako je posao obavljen.
6.3.1. Razlučivost imena
6.3.2. Teret živih objekata
6.4. Ekstenzije.
6.4.1. Kriteriji za razmatranje prijedloga
6.4.2. Trenutno stanje stvari
6.4.3. Problemi u vezi s korisnim proširenjima,
6.4.4. logička dosljednost,
6.5. Primjeri predloženih proširenja,
6.5.1. imenovani argumenti,
6.5.2. Ograničeni pokazivači
6.5.3. Skupovi znakova.
Poglavlje 7 interes i korištenje.
7.1. Rastući interes za C++
7.1.1. Nedostatak marketinga C++
7.1.2. Konferencije.
7.1.3 Časopisi i knjige.
7.1.4. Kompilatori
7.1.5. Alati i programska okruženja
7.2. Podučavanje i učenje C++.
7.3. Korisnici i aplikacije
7.3.1. Prvi korisnici
7.3.2. Opseg C++ .
7L. komercijalno natjecanje.
7.4.1. Tradicionalni jezici
7.4.2. moderni jezici.
7.4.3. Kako se natjecati.
Poglavlje 8 Knjižnice
8.1. Uvod.
8.2. Dizajniranje C++ knjižnice
8.2.1. Alternative dizajna knjižnice.
8.2.2. Jezični prostori i zgrada knjižnice.
8.2.3. Kako raditi s raznim knjižnicama
8.3. ranih knjižnica.
8.3.1. Stream I/O knjižnica.
8.3.2. Podrška za paralelizam
8.4. Ostale knjižnice
8.4.1. Jezgrene knjižnice
8.4.2. Održivost i donje baze,
8.4.3. Knjižnice za numeričke izračune
8.4.4. Specijalizirane knjižnice
8.5. Standardna knjižnica
Poglavlje 9 Izgledi za razvoj jezika C++.
9.1. Uvod.
9.2. Evaluacija prijeđenog puta.
9.2.1. Jesu li glavni ciljevi C++-a postignuti? .
9.2.2. Je li C++ logički koherentan jezik?
9.2.3. Glavna mana jezika
9.3. Samo most?
9.3.1. Most je potreban
9.3.2. Ako je C++ odgovor, koje je onda pitanje? .
9.4. Što može učiniti C++ učinkovitijim
9.4.1. stabilnost i standarde.
9.4.2. Obuka i prakse.
9.4.3. Problemi sa sustavom.
9.4.4. Osim datoteka i sintakse
9.4.5. Sumiranje i perspektive
Dio II
Poglavlje 10 Upravljanje memorijom
10.1. Uvod
10.2. Odvojeno dodjeljivanje memorije i inicijalizacija.
10.3. Dodjela memorije za niz
10.4. Položaj objekta u memoriji.,
10.5. Problemi s oslobađanjem memorije.
10.5.1. Oslobađanje memorije za nizove
10.6. Bez memorije
10.7. Automatsko odvoz smeća
10.7.1. Opcijski sakupljač smeća
10.7.2. Kako bi trebao izgledati dodatni sakupljač smeća?
Poglavlje 11 Preopterećenje
11.1. Uvod
1 1.2. Razlučivost preopterećenja.
11.2.1. detaljna rezolucija
11.2.2. Upravljanje nejasnoćama
11.2.3. Null pokazivač.
11.2.4. preopterećenje ključnih riječi
11.3 Povezivanje sigurnog tipa
11.3.1. Preopterećenje i povezivanje
11.3.2. Implementacija veze u C++.
11.3.3. Analiza puta
11.4. Stvaranje i kopiranje objekata
11.4.1. Kontrola dopuštenosti kopiranja.
11.4.2. Upravljanje dodjelom memorije
11.4.3. Upravljanje nasljedstvom
11.4.4. Člansko kopiranje.
11.5. pogodnost bilježenja.
11.5.1. "Pametni" pokazivači.
11.5.2. Pametne veze
1 1.5.3. Preopterećenje operatora inkrementa i dekrementa
11.5.4. Preopterećenje->*
11.5.5. Preopterećenje operatora "zarez".
11.6. Dodavanje operatora u C++
11.6.1. eksponencijalni operator
11.6.2. Operateri definirani od strane korisnika.
11.6.3. Složeni operatori.
11.7. Nabrajanja.
11.7.1 Preopterećenje temeljeno na enum-u
11.7.2 Tip Booleon
Poglavlje 12 Višestruko nasljeđivanje.
12.1 Uvod.
12.2. bazne klase.
12.3. Virtualne bazne klase.
12.3.1. Virtualne bazne klase i virtualne funkcije
12.4. Model za postavljanje objekta u memoriju.
12.4.1. Dodjela objekta virtualne osnovne klase
12.4.2. Virtualne bazne klase i izlijevanje tipova.
12.5. Kombinacija metoda.
12.6. Polemika oko višestruko nasljeđivanje
12.7. Delegacija
12.8. Preimenovanje
12.9. Inicijalizatori članova i osnovne klase
Poglavlje 13 Pojašnjenja pojma klase
13.1 Uvod
13.2. Apstraktne nastave
13.2.1. Apstraktne klase i rukovanje pogreškama
13.2.2. Apstraktne vrste
13.2.3. Sintaksa.
13.2.4. Virtualne funkcije i konstruktori.
13.3. Funkcije člana Const
13.3.1. Ignoriranje nedostataka" prilikom emitiranja vrsta
13.3.2. Pojašnjavanje definicije konst
13.3.3. Promjenjive ključne riječi i tipove.
13.4. Funkcije statičkih članova.
13.5. Ugniježđene klase
13.6. ključna riječ naslijeđena
13.7. Opuštajuća pravila zamjene
13.7.1. Opuštanje pravila argumenta,
13.8. Multimetode.,
13.8.1. Kad nema višemetoda.
13.9. Zaštićeni članovi
13.10. Poboljšano generiranje koda
13.11. Pokazivači na funkcije članova.
Poglavlje 14 Glumi.
14.1. Glavna proširenja
14.2. Identifikacija tipa tijekom izvođenja
14.2.1. Zašto je RTTI potreban
14.2.2. dynamic_cast operator
14.2.3. Ispravna i netočna uporaba RTTI
14.2.4. Zašto davati "opasna sredstva"
14.2.5. typeid() operator
14.2.6. Model za stavljanje objekta u memoriju,
14.2.7. Jednostavan unos/izlaz objekata,
14.2.8. Druge opcije
14.3. Nova notacija za lijevanje tipa
14.3.1. Nedostaci odljevaka starog tipa
14.3.2. izjava static_cast.
14.3.3. reinterpret_cast operator,
14.3.4. const_cast operator.
14.3.5. Prednosti novih tipova,
Poglavlje 15 Predlošci
15.1 Uvod.
15.2. Zašto su potrebni predlošci?
15.3. Predlošci razreda
15.3.1. Argumenti predloška koji nisu tipovi
15L. Ograničenja argumenata predloška.
15.4.1. Ograničenja zbog nasljeđivanja.
15.4.2. Ograničenja kroz korištenje
15.5. Uklonite dupliciranje koda
15.6. Predlošci funkcija
15.6.1. Izvođenje argumenata predloška funkcije.
15.6.2. Određivanje argumenata predloška funkcije.
15.6.3. Preopterećenje predloška funkcije
15.7. Sintaksa
15.8. Metode kompozicije
15.8.1. Prezentacija strategije provedbe
15.8.2. Zastupanje odnosa narudžbe
15.9. Odnosi između predložaka razreda.
15.9.1. Nasljedni odnosi
15.9.2. Transformacije
15.9.3. Predlošci članova.
15.10. Instanciranje predloška
15.10.1. Eksplicitna instancija.
15.10.2. Točka instancije.
15.10.3. Specijalizacija.
15.10.4. Pronalaženje definicija predložaka
15.11. Posljedice uvođenja predložaka
15.11.1. Odvajanje implementacije od sučelja
15.11.2. Fleksibilnost i učinkovitost
15.11.3. Utjecaj na druge C++ komponente.
Poglavlje 16 Rukovanje iznimkama
16.1 Uvod
16.2. Ciljevi i pretpostavke
16.3. Sintaksa
16.4. Grupiranje.
16.5. Upravljanje resursima
16.5.1. Pogreške u konstruktorima
16.6. Nastavak ili završetak?
16.6.1. Zaobilazna rješenja za implementaciju životopisa.
16.7. Asinkroni događaji
16.8. Rasprostranjena na više razina
16.9. Statička provjera
16.9.1. Problemi implementacije.
16.10. Invarijante
Poglavlje 17 Imenski prostori
17.1 Uvod
17.2. Čemu služe imenski prostori?
17.2.1. zaobilazna rješenja
17.3. Što bi bilo najbolje rješenje?
17.4. Rješenje: imenski prostori.
17.4.1. Mišljenja o prostoru imena
17.4.2. Injekcija prostora imena
17.4.3. Alijasi prostora imena
17.4.4. Korištenje prostora imena za verzioniranje
17.4.5. Tehnički detalji
17.5. Klase i prostori imena
17.5.1. izvedene klase.
17.5.2. Korištenje osnovnih klasa.
17.5.3. Isključivanje globalnih statičkih deklaracija
17.6. C kompatibilan
Poglavlje 18. C pretprocesor
Abecedno kazalo.

Poglavlje 10 Upravljanje memorijom

10.1. Uvod
10.2. Razdvajanje dodjele memorije i inicijalizacije
10.3. Dodjela memorije za niz
10.4. Postavljanje objekta u memoriju
10.5. Problemi s oslobađanjem memorije

10.5.1. Oslobađanje memorije za nizove
10.6. Bez memorije
10.7. Automatsko odvoz smeća

10.7.1. Opcijski sakupljač smeća
10.7.2. Kako bi trebao izgledati dodatni sakupljač smeća?


Poglavlje 11

11.1. Uvod
11.2. Razlučivost preopterećenja

11.2.1. detaljna rezolucija
11.2.2. Upravljanje nejasnoćama
11.2.3. nulti pokazivač
11.2.4. preopterećenje ključnih riječi
11.3. Povezivanje sigurno za tipove

11.3.1. Preopterećenje i povezivanje
11.3.2. Implementacija izgleda u C++
11.3.3. Analiza puta
11.4. Stvaranje i kopiranje objekata

11.4.1. Kontrola valjanosti kopiranja
11.4.2. Upravljanje dodjelom memorije
11.4.3. Upravljanje nasljedstvom
11.4.4. Člansko kopiranje
11.5. Pogodnost notacije

11.5.1. "Pametni" pokazivači
11.5.2. "Pametne" veze
11.5.3. Preopterećenje operatora inkrementa i dekrementa
11.5.4. Preopterećenje ->*
11.5.5. Preopterećenje operatora ""zarez"".
11.6. Dodavanje operatora u C++

11.6.1. eksponencijalni operator
11.6.2. Korisnički definirani operatori
11.6.3. Složene izjave
11.7. Nabrajanja

11.7.1 Preopterećenje temeljeno na enum-u
11.7.2. Booleov tip


Poglavlje 12

12.1. Uvod
12.2. Osnovne klase
12.3. Virtualne bazne klase

12.3.1. Virtualne bazne klase i virtualne funkcije
12.4. Model smještaja objekata u memoriji

12.4.1. Dodjela objekta virtualne osnovne klase
12.4.2. Virtualne bazne klase i izlijevanje tipova
12.5. Kombinacija metoda
12.6. Kontroverza o višestrukom nasljeđu
12.7. Delegacija
12.8. Preimenovanje
12.9. Inicijalizatori članova i osnovne klase

Poglavlje 13

13.1 Uvod
13.2. Apstraktne nastave

13.2.1. Apstraktne klase i rukovanje pogreškama
13.2.2. Apstraktne vrste
13.2.3. Sintaksa
13.2.4. Virtualne funkcije i konstruktori
13.3. Funkcije člana Const

13.3.1. Zanemarivanje const prilikom izvođenja tipova
13.3.2. Pojašnjavanje definicije konst
13.3.3. Promjenjive ključne riječi i tipove
13.4. Statičke funkcije članova
13.5. Ugniježđene klase
13.6. ključna riječ naslijeđena
13.7. Opuštajuća pravila zamjene

13.7.1. Pravila opuštajućeg argumenta
13.8. Multimetode

13.8.1. Kad nema višemetoda
13.9. Zaštićeni članovi
13.10. Poboljšano generiranje koda
13.11. Pokazivači funkcije člana

Poglavlje 14

14.1. Glavna proširenja
14.2. Identifikacija tipa tijekom izvođenja

14.2.1. Zašto je RTTI potreban
14.2.2. dynamic_cast operator
14.2.3. Ispravna i netočna uporaba RTTI
14.2.4. Zašto dati ""opasna sredstva""
14.2.5. typeid() operator
14.2.6. Model smještaja objekata u memoriji
14.2.7. Jednostavan unos/izlaz objekata
14.2.8. Druge opcije
14.3. Nova notacija za lijevanje tipa

14.3.1. Nedostaci odljevaka starog tipa
14.3.2. izjava static_cast
14.3.3. reinterpret_cast izjava
14.3.4. const_cast operator
14.3.5. Prednosti novih glumaca


Poglavlje 15

15.1. Uvod
15.2. Zašto su potrebni predlošci
15.3. Predlošci razreda

15.3.1. Argumenti predloška koji nisu tipovi
15.4. Ograničenja argumenata predloška

15.4.1. Ograničenja kroz nasljeđivanje
15.4.2. Ograničenja kroz korištenje
15.5. Uklonite dupliciranje koda
15.6. Predlošci funkcija

15.6.1. Izvođenje argumenata predloška funkcije
15.6.2. Određivanje argumenata predloška funkcije
15.6.3. Preopterećenje predloška funkcije
15.7. Sintaksa
15.8. Metode kompozicije

15.8.1. Prezentacija strategije provedbe
15.8.2. Zastupanje odnosa narudžbe
15.9. Odnosi između predložaka razreda

15.9.1. Nasljedni odnosi
15.9.2. Transformacije
15.9.3. Predlošci članova
15.10. Instanciranje predloška

15.10.1. Eksplicitna instancija
15.10.2. Točka primjera
15.10.3. Specijalizacija
15.10.4. Pronalaženje definicija predložaka
15.11. Posljedice uvođenja predložaka

15.11.1. Odvajanje implementacije od sučelja
15.11.2. Fleksibilnost i učinkovitost
15.11.3. Utjecaj na druge C++ komponente


Poglavlje 16 Rukovanje iznimkama