You are on page 1of 82
El lenguaje de programacion C++ Bjarne Stroustrup 2 Ellenguaje de programacion C++ ‘9 th Mareus, me has dado muchas cosas; ahora voy a darte yo un buen consejo. Sé ‘muchos. Abandona el juego de ser siempre Marcus Covoza, Te has preocupado demasia- do por Marcus Coccza,y en realidad has se esclavo yprisionsr> suo. No tas hecho nada sin considerar antes c6mo podta afectar ala felicidad y el prestigio de Marcus Cocozs. ‘Tenias siempre mucho miedo de que Marcus hiciers una tonie-a o se absrriera. :Y qué importaba? Todo e mundo hace tonterfss.. Me guttaria que lueras esponténeo, que tv ‘oraz6n se iluminari de nuevo A rarir de ahora debes ser no una, sino muchas persons, tantas camo puedas imaginar... » Karen Blixen “ de C++ — Cy C++ — st ‘gerensiaspara programadores de C — sugerencias para programadores de C++ = reflexiones sobre programacisn en +t — consejs —referencias LL Estructura del libro El presente libwo consta de ses partes: Turoduceiér: Los eapitulos a 3 ofrecen une visién de sonjunto del lenguaje C++, los estilos clave de programacién que soporta y la biblioteca C++ estinda arte [: Les capitulos 4 & 9 proparcionan wna inteoduccidn didactica alos tipos pre- {de inidos de C++ y alos recursos hasicos para construir programas a partir de ells. Fane I: Les capitulos 102 15 son una ynrocuccisn didjetica ala programacisn orien- {aca a objetos y genérica con C+, ante Il: Ex los capitulos 16 a 22 se present: la bibli Farte IV Ex los eapitulos 23 a 25 se estudiantemas re saurollo de software. Apéndices: os apéndices A, B y C contiena detalles sobre los aspects técnicos del Tenguaye El capitulo 1 o'ece una visién de conunto de ibro, algunos consejos sobre emo usarlo € informacisn fundamental scbre C++ y su uso Animo al I2ctor a que lo hojee, Tea lo que le parezca intewesante y vuelva a él trax lee ots partes del libro. Los capitulos 2 y 3 ofrecen una visin de conknto de los conceptos ycaracteristica pri teca C4 sind. nados con eldiseRo y el de var al ketor para que dedique tiempo a los conceysos fundamentales y 1ay‘varacterstcas baisicas del lengucje, mostrindole lo que se puede expresar undo todo el lengusye C=+, Cuande menos, esos captulas deben convencer al lector de que C++ no es (slo) C.y de que C+ ha recorsido un largo camino desde la primera y segunda ediciones de este lites El capfulo 2 sirve para fumiliarizarse a alty nivel con C4+. Se analizan las caracteristicss del lenguaje que soportan abstraccién de datos, programacién orientada a objetos pro _gramac6n genérica. El capitulo 3 introduce los prncipios bai:os y los componentes prin ipalesde 1a biblioteca estindar, Ello me permite usar compenentes de la biblioteca ex. ‘indar en los capitalos siguiente, y al lector le permite usar cemponentes de Ia biblioteca en tos gercicios. e1 lugar de trabajar directumente con earactesticas precefinidas, de me- nor nivel Los capitulos inroduccorics oftecen un ajemplo de una técnica geseral que se aplica a 4o largode todo el ibro: para posbiitar un andlisis més directe y reaista de alguna ice 6a 0 camcteristica, en océsiores presento primero brevemente un concepto mas adele te To amilizo en profundidad, Este planteaniiento me permite afrecer ejemplos concrcts antes de presentar un tratamiento més general del tema. Asi pies, la organizacin del bro reflja Ia idea de que habituslmente aprendemos mejor avenzando de lo concreto alo abstract, aun cuando, al miraratrés, lo abstracto parezca sencillo y evident. La Parte I descrbe el subeonjunto de C++ que soporta est os de programacicn tradi- 19), cadenas! (capttlo 20), EntradaSalida (capitulo 21) y soporte pars computacidn ni inética (capitulo 22) {La Pare TV analiza cuestiones que surgen suando se usa C44 en el dis e implemen: "A to large de todo el ibro, se uiizaseaden (em inglés. siring) como sinérimar de asecuencia ot para er 1 i ae toy in erie. Enel pul Pes aala lsh ent ol lenaje do Beatie elaknere Cy Cosy enve etna Cr+ Cambie lmao 80 Cr+ Lei yo ‘Sela No ence nade ve puede initiate escraurs de programas de ato rea pare formarse una idea exacta de cémo es un lerguaje dz programacién. Este libro se cen- dos 300 a y By funciones f1) y #1) ; En los ejemplos de cd go se usa ur tipo de letra de anchura proporeional para los iden: lifieadores. Por ejemplo: ‘include -iostream int mein) std: scout << "Hola, nuevo mundo | a" A pier iste xl de presen pus parecer santas aos progrmado Tesacostunbradca ver el cligoen ps Je era dearciurs constant, Sn emtarg, fs po de anchuaproporcioal se comsieran en general mejores que bs de anche con tate pal proses de eno, Usrun pode anc proporcionan pert bien resemar el ebigo cn eno sos de agian. Ades, lo experimen gue he realizado demiestran que la mayor parte def gente excita ensegida el nuvo es: tilo mis facil de eer. ee : | Simp qu pol, las caracterticas del lengunie ya ibiteca Coe se oresen tan en contexte de so 9 no la fora dade un mana Lt coated ee ae presenta el dele cen que sedescribe ean i pono devise os se nessa para un uso fective de Co Un bo complemenaie, The sumone Coe Langage Stadard, esto en coaboacién con Andrew Keen, etc a denen completa del enue, amo eon comentarios cus propos hacerlo aces seine, deters haber ot libo completa, Te dnnouted Libram Cae, So tmbgo das mis iiacione en esta a tempo ycapaadad pas ese, no pose Promeer que lege a proc La referencias acts partes de ese Ro teen Ia forma $234 (apo 2 garado 3, sutapartado 4), $8.56 (Apenice B, sabapataco 56) $6610] (apts &: cercets 10, Lacusve seus en oaones par desta albas per enplo sun cals dea no es acepane), para stale a primera paiion de concepts portant por ejemplo, polinorfsmo) para sinbols no terminals de le pamaten Cx po som, sentrcafory palo comentarios ens empl de eg Seunacantnegng representa detfeadoes,palatas cave y valores numercos en lo jen de eotne (por empl, clas, contador y 1712) 1.1.2 Bjercicies Los ejericios se encuentran al final de ios capitules. En su muyoria consister en escrbir lun programa. El lector debe escribir siempre eéaigo suficient: para que sea sompilada sjecutada una solusién con al menos tres casos de prucba. La dificultad de los ejereicios varia considerablenente, por lo que se indiza Ia dificultadestimnda para cada uno mediante luna escala exponeacial, segtin la cual siun ejercico (*1) le Leva al lector diez minutos, tun ejerccio (*2) puede Hevarle una hora y un ejercicio (*2) un dia, El tiempo neceserio para escribir y probar un programa depence mas de a experiecia del lector que del er. cicio ea sf, Un ejersicio (*1) Hevara un dia si el lestortviera que familiarizerse primero con un auevo sistena informético para ejcutatlo. Por el contario, un ejerciio (°8) po dria hacerlo en una hora alguien que caualmente vera a meno la coleccin de progr Coma fuente de cjervicios extra para la Parte I se puede usa’ cualquier libro sobre pro- framacin en Cy vara ls partes y Ile pueden usr libros sobre exvtues de das ¥ algoritmos. 1.1.3 Nota sobre inplementacién lenny wad ene ibe Cv pron tl como sede ena Cee [Ce 199] Ee cnscucsia seo sos farce sabe ees moc es Cio rica gnats propa dl ibe poe ea oe pleneindones C+. Los eomps co qu se un eaterco elope mene or Cov no ompinen e su Inpleeaions Socmngs eae ‘esés mencionar qué implementacida fallé en la compilaciin de qué ejemplos. Semejante jnformacién quedaria ensepuida antcuada peryue los implementadores estén trapajando fnuvho para garantizar que sus impkmentaciones acerten correctamente todas las carac- Teritigas de C++. En el Apéndice B encontrariel lecteeseperencias sobre eso manejar fe con conpiladores C++ mis antigans y con eédigo eser to para compiladores C 1.2 Aprendizaje de C++ Lomés imporiame para aprender C+ es concentrarse en los conceptos y no perderse en Jos detalles tenicos det lenguaje. La finalidad de aprender un lenguaje de progremacién es mejorar como programsador, es decir, ser més eficaz en el dseflo e implementacion de fos sistemes nevos y en 21 mantenimiento de les antiguos Por ello, es mucho més impor de programacicn y disefo cue conocer los detalles; ese co: tene comprenr ls tice toeimient ga son el rrp ya tic ‘cre sonora diversos esos de popramavion, Todos se basen en uta comprobacisn estaica de tipo rigrosay I mayor pretend: leavar ox alto nivel de abstain yuna fepresentacgn deta das ieas del prorar or. Tedosellos pueden ogra ut prop: ‘Mes de meta eficaz al tempo ne mantire la efeencia de espaci y de fempo de Sevucion Un progamacor que prea de wn enguge cifrente(C, Foran, Smalltalk, Livy ML Ada Eifel, Pacalo Modl-2) debe ener encurna qe, prs ener maxi tereicio ve Co, dee dda erpo a arenercimerbriza exis 9 tenis de pro fPanacionadeouados Cr, Lo mismo puede devise de los propramadores asiuados Ta apliacinineexva aor lenguaje ds tcnicasecaces en uno conduce genera mnt Taobtncion de slg orp de bajo zndimiot y Bel de mumener seri. Toesulta ademas sumamenc frostant,porce cada linc de codigo cada nesaje de tre del eompiladorreeedan al proramad> que e!lerguse ula es dient dl Saguos Se puede escabir con elestito de Pan, Small, eee, enculguer Temuse er-ne resulta apadable 1 econdmic cuan la isoia del lenguaees fe rene, Chalgue enguaje pore ser ua product va uete ce ideas sobre cm eerie pro- frunas Cs Sin embargn hs ideas ceben isormae alo qe se alate Is csr tern ger ye sine depos de C+ parse sean cktvas en ene context diferen- tebe shea sin depos den Teng sos den obtener itr piss. esata poimacin aa al sprndizae mo se plate care apen- diye de tn mivolenguyje de pogunacion pended lo qu a sep de Ip guepe- tena aprender No hay un planeantento que ea vio ra odo el mundo, La pes dea qc he prio esq lector ets aprtiend Ca pts mejorar como arama tory dschador Es dec sapongo gue el prepito dso l aprender C+ 0 es Se cilmente aprender una ints neva pars er cost dea form lau est aon tea, sno aprender formas noevas mejores de consi sistemas. Yeo hay que hi cero rndalmnt, pane aison de suger ueva habla inportae require Senipoy rictea Pensemosen lo ie va gprnde bin um oma new 9 apron éera tocar ben an insuento muse, Mj come enador de sistemas 1m ei 1 ms pl, por no tanto cono le gustaria a mayeria de Ia gem Como consecuencia de lo anterior, el lector va.a usar C++ —a menudo para crea ss temas reales— antes de comprender todas las caracterfsticas y técnieas Jel lenguaje. Al vo Portar diversos yaradiginas de programacién (capitulo 2), C++ soperta programacivn pro. difieren sélo en la forma en que sedefinen, no en la forma en que se usan, La biblioteca estindar C+ des rita enla Parte I proporcicna muchos ejemplos de esos tips y sus sas. Desde el punto de vista del usuaro, hay poca diferencia entre un tipo predenido y un spo proporcrona. do por I biblioteca esténdar En eldisefio de C++ se am evitado las caracteriticas susceplibles de suponer costes extra en tiemo de ejecacién o en memoria aun sin ser uilizadss. Asi, por ejemplo. se rechaza. ‘on construceione: que huieran hecho necesarioalmacenar «informacién de mantenimien fo» en todos los objetos, de modo cue si un esuaro dectara una estructura compuesta por dos cantidaces de 16 bis, esa estructura cabei en un registro de 32 bits, ‘Ce fue dseniado pera si uso en un entors tradicional de compilacin y tempo de ee ucidn: e ertorno de programacidn de Cen el sistema UNIX. Afortunadamente, C+ nunea tha resirgid a UNIX: simplemente ws6 UNIX y C como melo pare Is relastoney ae lengua, bibitras,compiores, nian evonos de esi, esters fnodelo mimo ayudé a C++ a salrairoso en précticanente cualquier plataferma infor- ‘ndtca. Hay sin embargo, buenas racones part usar C+-+en entornos que proporcionan bas- fante ma scporte. Se puede sacar partido d= recursos como la carga dindmica, la comp lacién incremental y una base de ditos de dfiniciones 4e tipos sin afectar al lenguaje ‘Las caradteristicas de C++ de comprobacin de tiposy ocultacién de datos se basan en 2 anilisis de los programas en tiempo de conpilacida para impedir corrupcionesaccider tiles de 1s datos, No proporcionan confidencalided 0 proteccién contra alguien que ineumpla deliberadamente las normas, Sin enbargo, se pueden usar cun libertad sin inet Fir en costes de tiempo de ejecucién ni de espacio. La dea es que. para que sea iil, wet ‘aracteristicn de lenguaje debe ser no slo eegante, sino también asecuible en el conte Para vnadscrpcién sstemdicay deta ada del deo de Cv, consult el lector [stroustrup, 1994). 131 tiene +e desarolls apart del lengaje de rogram’ Cy, con estat excpsione smervaC som sion. Ellngje see bsojune Cd Coen hac amg ays anc eae cite sn in iy ec os ots dos ae ocupan fneanzt lee compares: nines, caters Secloes Save pralosoperaes mew, ete pth dymomte ay throw ye lo ine sxe setendes ndvidaes Ce wo nscesian spot de temp de Cr+ puede usar las mismas secuencia de lamada y rtorno de funciones que C, w otrs is eines. Cuando in lo sos mecansnos atramenteefcentes son demands Stone se puede suit en line una Turion de Co, de modo qe pderos ds ie a coma ota ona de las fio sin cose ra en emp de eject Una ds ialidade rginaes de er ssi coliicaionen lenge ensan- nde parts rent igen do progamaviGn Ge itn, Cate Sach Crs presto gan ancora vo comprometer ke ganado cr esa se, La diferencia ete Cy Cer ada funamenamente ene grado d nfs sabre onion) la extra, Ces Expresveymermisiv Crt es an ns expresvo.Sinewbaro, para comer ev tumen se enpresividad, ry que presi encin os ipo de los bles. Concsendo les "pos de sabes ef compiler puede menejrcoratament expesiones en situci= rer en las que, de a od, habs ico que espesfiar las operons Bast mi timo dette Concer stp dels objets permite iinimoal compar dexear er tqu, de Gro modo, aban persist hast a pra, ones mi ard, Hay ge er Er cues qu lwo del sem ce tipo pare comprar agumenton de uncer fe los dato de una crap accidental poporiose nuevos tipo, proporonar mi y estructura Nos opraores, tetera, no amen Ios ones en cuanto a tempo de jecusin nae Pacio en C++, ies La importanci conceal cxtrucra en C+ refuel mento en salad fos progranas escros desde que eds Poems hace furciona ala fcr sn prea Pegue> (0 lines por esp) anc incl sa ei eo tio, Peo no oeur lo mismocor an pean mix pande Sila esrctra de un pp ta de 190.000 nea es mal, deseubrrenes ie se itoducen menos emerson la mana Yeloctnd con que se eliminan los antigacs. C+ fue dsehada para hacer pole gue os brogranas mis grands se estucsaran de rancra raion de mod que fers ae ‘ue ane person se ocopara de cntdadesdecoipn mucho mores Ade se pete 4a que uma na promedio de eigo Cr expesira macho ms que un linea pre de ego Co Pascal ests ars, Cus ha leanzado com eves ess bjevon, Notndos los fepments de tiga plelen estar bien esucurados se ndependisnes del hncware, ies dele, eer, C++ poser caters extn eas pas spar cursos del hardware de manera ects Yeisen, si ene en cunt a sg dada facade comprensin, Pose simismo recurs par ao xe egy ce. tes de merfaces elegans yseguras Nairalmente,e uso de C-+ fra programas mis grandes conduc al soe C++ por srupos de programadores El fess de C-+ cn la auras interac uerenon, te ips a flex bildad demuestra enfonces sa valor. equi de ecu de Cos pra xii programas grandes ro lo tee ning lengune Sn embargo metide que Ios progames on ms grande, lo probit cna desarloymatenmshe pasan ser problemas de leeguje ast yoblemas mis glides de heramientae 9 es tin. Ena Parte TV se explore algunas de ests custiones, En ede libros hae incaiéon encase sirven para rcporconarrcunos dep pésito perl pas de gran liad itineas, enter, Ets tcica servis los disetadores de ropramaspegusos conn alos deprogramas andes. Ades ded 4 que tos los programas no wives se cmp de muchas partes semindependenes las téncas de excrtra de eam partes sren& fos programadors de cunlguer pcan El eo pia pensar qu a epecifiasion deur prograna mediante a dense trctura Je tpos ma detalada da igar aun texto fuente dl programa ms large Con noes st Un programa Ct gue declare pos d Tos arptmentos es funciona se cls, etter, ser haitualmente ws ovo mi corto qe programa C eulle due no enplee eos recursos. Cuatdo se tse iblzas, en peprana C+ resuard ho més corto que 50 equivalent C, suporendo,nstrament que se patie consis un egufatente € que funciona 13.2 Neta filassfies Un lengeaje de programaci6n cumple dos propésitos rlacionades entre sf: proporciona un vehiculo para que e! programador especifique acciones que deben ejecutarse 9 propo ‘na un eorjunto de conceptos para que el programadcr los use cxando piense en lo que s¢ ppuede Facer. El rimer propésito requiere, idealmemte, un lengaaje que esté «préximo a Ja mAguiva», de mado que todos 1s aspecios importantes de uia méquina sean mancja dos con sencillez y eficiencia,en una forma que sea tazonablemnte obvia para el prosra ‘mador. El lenguaje C fue disefado partiendo de esta icea. El segundo propésito requiere, fn rondicones ideales, un Inguaje cue esté ara soportarcontenedores de tpi feaci6n estatiza (tales como listas, sectores ¥ mapas) ¥ Fara soportar un uso elegante y sficiente de exos contenedo-es (progamacién 2enérica). Era objetivo fundamentilredv- Cire uso de macros y moldes (casts, conversiones explcitss de tipo). Las plantillas se ins- Fraron en pare en los genéricos de Ada (tanto en sus punos fuertes vorro en los débiles) Ye parte en Is médulos perametrizadas de Clu, De ferms semejant, el mecanismo para ‘manejo de exeepciones de C-+ se inspits patcialmente en Aa [Ichbiah 1979], Clu [Liskov, 1979] ML {Wikarim, 1987). Orosaances inrducios ene 1985 y 1995 como la ern mulls onsones vite gus es pac omnes orn Se fo grcralizacionesimpulsadss por la etpereacc en el wo de Cosy no Mee pos das de otros lengusjes. . e - peta : Desc 1980s hn wsado versiones ries del engi, cmos en conjunto como ,igeamente mis Corto, ean err ee siti seta usa ambign come nome dean lengafe oan una coerin cone! que nos ocapa. Quetesconocn a sematica dC enuenton joc Cates nferiora 44 El lengaye no se lama D pore esa eatsson dC vm tena acinar problemas soprimiendociratristzas. Par ta inerpetaeion a sone ct tr apne (Or 199) ‘+ ue disad> oiinalmete prague ator sus amis no avian gue pre: ina en ensambladcr, en Ci en ders lenguajes modern le ate aie Sh Halll Brincipa era consevir que fuera mas fai y mis agadable pura el pogramader nde ual esibir bueno: programas. E lox pineros anos no hubs cncno cn papel de Cosel ise, documenaidny la imglementuin aeren simultinon, No to tampors oo lioteca de tareas descrita en [Stroustrup 1987] y en §12.7111] formé parte 31 primer programa «C con clases» que se cescribi6. La esribi, asf coma sus clases asociadas, pata soportar simulaciones de estilo Sirula, Labibjioteca de tarecsha sido revisada.y reimplementada, sobre todo por Jenathan Shapiro, y se s gue usando rnucho, Labibliotece de fujos (em inglés, streoms) que se des- cibe en la primera edicidn de este libro fue disefada e irplementada por mi Jerry Schwarz Ta transforms cn biblioteca de fujos de E/S (cxytulo 21) wsando la técnica de manipula- dor de Andrew Koenig ($21.46) y oss ideas, Lz biblioteca de Mujos de EYS se perfeccioné luego durante proceso de estandarizecién,reaizando el grueso del tbajo Jerry Schwar7, Nathan Myers y Norihiro Kumagai, El desarrolly del rezurso de plantllas estuvo influido por las platiles veetor, map list y set ideadas por Andrew Koenig, Alex Stepano’, ott0s autores y yo mismo, A'su vez, el trbajo de Alex Stepsnoy sobre programacién genérica ‘cen uso de platllas desemboo6 en lis partes de contenedares y algortmes de la bibliote- 9 estindat de C++ ($16.3, capitulo 17, capituls 18, §19.2). La biblisteca valarray para ‘computacion numérica (capitulo 22) es fundamentalmente tabajo de Kent Budge. 15 Uso de C++ ‘Cortenares de miles de prog-amadores usan C++ en pricticamente cualquier dominio de aplicacién, Est: uso esté soportado fer alrededer de una decena de implementacienes in ‘dependientes, centenares de bibliotecas, centenares de manuales, diversas publicaciones \é:nieas, nuchas conferencies e innumerables aonsultores, Hay formacién y enseaanza a tuna amplia vaiiedad de nivek. Las primeras aplicaciones tenian generalmene un fuerte aroma a progiamacidn de sis- temas, Asi, por ejemplo, varios sisteras operativos importantes han sido escritos en C++ [Campbell, 1957], (Rozier, 1988}, [Hamilton, 1993], (Berg. 1995], (Partington, 1995] y muchos ms tienen partes clave hechas en C++. Consideré que para C++ ota esencial una Tigurosa efcieacia a bajo nivel. Esto nos permite usar C++ para eseriir controladores de dispositivos y software que se basa en la maniptlicién directa de hardware con restrcciones. de tiempo real. En e6digo de ese tipe la predevsilidad del rendimiento es, como ruinimo, tan importante como la pura velocidad. A menudo es tambin la compacidad del sis ima reitante, C+ fue dseado de moto qe tos las earicersicn eae esa utilizatles en el cddigo en condiciones de fuerts imitates de titmpco tenes {Stouseup. 1954, $43). La mayor pat de ls aplicaciones nen ramos de cig que so eseciles para un tendimintoacepbe. Sin embargo, major cana de ego no sigee noe omen Para la nayor par: del eSigo a maneiiidad facade eters a fcaa de pret es clave. El soporte de Ce paraests custonestaconiedo we amelie siempreque la fatilidades indspensaey en ies en Tas elas novedades contin sinifieaivamente ao la-go del tempo, Son ejemplos de clo la banca, el coneie he seguros is telecornnicacionsy las apicaones militares. Dirate sol contol ey ta dl sistema tlefnicoestadouidens de larga distancia be confady en Cary tas las amas 400 (sn cost para abonato gellar) han sd encaninadas por wv me rama G+ [Kanats, 193) Muchas dees aplicaciones son sander de age sda consecunci, ia extailia, compatbilidad y posbilad de aio de tcl han spe cupacicns constants ens desarolodeC-s No esintecuetsenctas own dein miln de ness Algal que C C++ no cise esposficiment para computacion numérica Sinem bargo, se hace com ++ mucha computacisn numer, cinta de ingeniona, Usa te 26a impertante pars ello es gue el wabsi numérico radiconl debe cminase a sone so con gaicos yon cculos que se basa en estrus dedelcsy no chejon cn cleo Fortran tadicional Budge, 192){Baron, 1994] Los pifcos as eines de wes son dre en ls gue se use mucho Ce, Cunguira que haya undo sls ves on Aspe Macintos oun PC son Windows ha nad indrectaente C++ pore ls intrest arias de usuario d esos sistemas son programas Cr, Adem alfunas dels nis po Polaesbliotecss qu opatanX para UNIX extn crits er Cae, Aa pots, Cas ooo opcisnbsbitval puree vaso mero de plcacionet en ls gurl neti de woucan Sa pare important “ode b antericrsala el qe puede ee principal punt fee de C4 su capacilad pata ser wsado cor eeaciaen aplicaciones que requcen taajacn dren eae «sci, Es stants tecuerte encontrar aplicaciones gue enraan iter cad ee 3 de gran ampli, anaiss aumerco. gio, imeccion dl wats Meco a bn datos Tadiciona mente estan seas de apcacin hn sido coda stn he So atencdas cas spmpre por comunidades teenies deremes ge saan dinero leans ce progranacién Sir embargo. C+ a= ba wsado anpliament tn tas cos ees Ins, pace coexisircon fragments de cig» provamas ecios ee oe eneaas Ce es ampliament tiizaco en la emetanesy Ir investigaign algo gus fe Fendi alguna: personas que —aceradinente— elaine Css ances leone ts poqtto ni mis impo de los uc se tan dscRadh. Es sin nba ~ ‘sufentement pi pcs a enseanra de lon concepts bee, ~ sufkientemente reais efcentey exible par proyects exreents, ~ sufkintemente accesible par rganizacionesyslaboracones aus apyan ends tints entmos de deals yejecucon, ~ sufidentementeamplio como vehictlo para la enseRanza de concerosy técnica avamados, y : oe _ suficientemente comercial como vehiculo vara poner en uso profesional lo aprendido, ‘Cex es un lenguaje con que el lecior puede erecer. 1é Cy C++ stu elegilo como lnguje base ps C+ pare CO esl concise de nivel elaivarent Dj 23} advan pra a myor pare dels areas de progranacin de sisemes 3S Cerna ents pansy con tds is agua {Teak see Po ap fisnus de ox conocts, Algo importante taj con hizo posible que «C com el 2a her sna hewamien lune ope alos poor meses de pensar por pra ver tertair a lsc como lis de Sir . fella qu ac genre el wre C+ ye hiiron més signieaivos os ecurss aot acts mut aly poretcima deC. surgi ona y ova veu la pregvts de ser omnes Awe ome mantener compat, Es events que goian haters evita algunos Verena de C(vease por ejempla [Sethi 4a) hay cenfenares de les de programadores que conocen C y, portato, s6le neces: 41 lengvaje C también ha evolucionado, en parte por la influencia del desarrolla de C++ [Rosler, 1984]. El estindar ANSI C[C, 1990] conticne una sintaxis d2 declaraciér de fun- ‘erieas y rucos que las jemplo, la conversin expicita de tipos se necesita con menos frecuencia en C++ que en C (81.6.1). Sin embargo, les Euenos programas C tienden a ser programas C++, Por tjer, Blo, todos los progtumas de Tie C Programming Language (2rd Edition). de Kernighan y Ritchie (Kemighan. 1988], soa programas C++, La experiencia con cualquier lenguaje de ‘ipificaciin estatics sera de ayuda para aprender C++. 4.6.1. Sugerencias para programadores de C Cuanto mejor se ccnoce C, mis dificil parece que es no escribir C++en estilo C, con bo ‘ue se pirden pare de los bereficios potenc-ales de C++. Ruego al lecior que convulte en ol Apéncize B las diferencias entre C y C++. Veamos algunas ce las reas en las que Cat iene fornas mejores de hacer algo que C: [1] Lés macros casi nunca son necesarias en C++, Use el lector const ($5.4) 0 emu ($48) para defini constantes manifiesas, inline (87.1.i) para evitar los costes ev {te de las Hamadas a funcién, templates (capitulo 13) para especificar familias U fuaciones y tpos, y namespaces ($8.2) para evitar conf ictos de nombres. {2] Ne declare el lector ina variable hasta que la necesite, de modo yue pueda inicial 2arl inmediaamente. Una declaracin puede aparecer en cualquier lugar en cl que uoda aparecer una sentencia (6.3.1), en inicializadores de la sentencia for ($6.3. ¥¥ en condiciones ($63.21), [BI No hay que esar malin). El operador new (§6.2.6) hace mejor el en ligar de realloc(), se debe intentar un vector ($3.8). [4] Precure el lector evita void", la aritmética de punteros, las uniones y los moles (er inglés, cass), excepto em las profundidades de Is implemsntacidn de alguna funcir © clase. En lt mayoria de fos casos un molde es una ind eacidn de error de dives Sil lector tiene que usar una conversién explicita de tipa prucbe a usar uno de low nuevos moles» ($62.7) para un enunciado mis preciso de lo que -ntenta hacer, {5] Hay que reduc al minim el uso de arrays y cadenas de estilo C. A menudo se pue der: asar las clases string (§3.5) y vector (§3.7.1) de la biblioteca estandat C++ para simplificar la progranacién con respecto al estilo tradicianal de C. En general el lecter debe traar de no construir Io que ya proporciona la biblioteca estandar Para cumpli las convenciones de enlazado de programas con C. debe declararse que una funcién C++ tiene erlace con C ($9.24). Lo mis importante es que el lector trate de concebir el programa como un conjunto de ‘conceptos en interaceién representados como clases y objetos, en lugar de como un ma ‘0.0 de estructuras de datos con funciones que juegan con sus tils 0 trabajo 1.62 Sugerencias para programadores de C++ En este momento hey muchas personas que llevan ya wna década usando C++, Son mu: has més las que usar C++ en ua solo entomo y han aprendido a convivit can las restric. ciones impuestas por los primeros compiladores y las biblioteces de primera generac ‘A nenudo lo que se I ha escepado en estos afcs a un programad:r experimentado de C++ ‘noes la intreduccién d las nuevas caracteristicas com tle, sino los cambiox de relaciones entre esas aracteristicas que hacen viables tericas nuevas y funcamentaes de programe co de otro modo, cosas gue ector vo pens no encones prticas cuando eee psitan comer aroun placenta Es algo eo purse seer recxeninando ls Tundamenbs del lerguaie. . nnd a Tetor qe Tea Tos capitals pcr orden. Sky conoce el contenide de un vo pur! epasaro eh nos mino. Sic lo cance aprender ago con Toque ho seine: Porm pare, he aprenddo stant erbiendo ee Ho, ysopesho qe ape a ‘aingiin programador ce C++ conoze todas kas caracteristicas y técnicas presentadas, ‘cata sr ie egies flan erst gu pong orn aime Je cameterscasy wenicas, Medians ss organi-aign sux epmplos, et I bro free ea pespectiva 1.7 Reflexiones sobre la programaciénen C++ far un rogram seplaiea en res fase. Primero Br adivioes ideale, lara de dsr un programa sep . tc legaa um comprensi clara del problema nisi) egos detifecan los concep tse ar enn ln Sey pr san se expan lane on zozrams (ogramacin), Sin enturgo, es Fecvene gue lox detalles el problema y Tonconcepos da slucion silo se comprendar con ceri tel esfucrz ue supone expres cou program © ncaa uc Ste fancioneacepablement. Presa zn es imprint ae een del engaje de pr a Ey ta mayora de ls aplicaciones uy clncetos que noes (il repreenur como de ks tips frdamene o como una fncion in datos asrlaos, Dado an concep a hay ue deca na clase psa represent eel programa, Una clse Cos ex un ipo, Es dcr, eae fen cio se comporan los obtos des ise: come se crea, case puecen manpu ary mo se destryee. Una elie pusdeepeifinr abi emo ae Pret lo ojo, une en scapes nak Gl dk de un programa eso ao debe terunspresuracion important. La dave paresribir buenos programs x dear lx flies de meoque cada na de ells resents con linpiera un sao concep, Amen do eo sigs que hay coe cenrae cn cuesiones del ipo: ,cimo se eean los objetos de eas cane eden copie fo desis In objets deta lane? QUE opericiones puccen apie exon eee Si ay respiesitssaifactrs para eas {5 potable qucel concepo ro esiver linper desde elprincipo, ers enoncts bu na eu pei nds en el rotlema ja souciypropuest par ela de enpezat immediate ecco preem, 7 Tbs canes fies de abort son fs que tern na formas matetca uation sneros de todo tipo, cojunto, ferns gemma, tft ES oenada 2 tot, cadens contenedones isis, los signtmosFancomentles sabe esos cote dores y algunas clases matemiticas forman parte de la bibioteca estindar C+ (capitulo 3.4 612) Ex st, ademés, una enorme vaiedad de hibtceas que soportancoaceptos emai espetfios de dominio. : Los coaceples mo exien en el vac: siemprt hy agnpanintos de concepts rac rads ents Dganiar a rela etre ly ches de ut programa es dev stern Zarb reac sxacta qu ay entre os erenes concep qe inerverenen ura wl ida sel a mds dif ue estbleceriicalment ls dns caw. El reside tno debe ser un embroileen el que cada clase (concepto) depénda de todas las dems. Con sideremos dos eases, Ay B. Relaciones como «A llama a linciones de», «A crea B ‘ que el lector suede tenes en cuenta para ‘aprender C++, A medida que gane dominio del lengusje podré alaptarls para hacerlas ms cin Som, de manera deere my iadas sus aplicacions sv estilo de progamacion Son, de a arias que no enranen detalles, Noy ue ars lp del et, ?ara cx ne ae poprama hace aa nlgeni, gst y fa nc. No expe el bx ha eben aa primers experiment bans cl intaciGn conereta de sus ideas fara la fund elector programa, cies una reqs wa rein de algun probema, Hay sue dr que la etroctora de posrama eee aver lo nis drecament one oe faunas prnear cu spe comme un ie independente convent 3 wt (oS pure pnsar cn lgo como una en dd independiente, cave es algo tr ojo de alguna clase fey Sido clases nen sear com, conven en wt else bart, [al Ste mplementcin de dos clases as algo sigcav ea comin, core sos pots comes en aca Be le] omc es un cre de con splat If Stora ncn implements un algo param ont : Ticién plantilamplementand el algyting pre una fami de contexedores cieaue Stum conjumo de ass, plains, ccter,puudahrelacion lige _ Jas em un espacio de nombres comin. : 2] Cuando aia una clase gue no implemen onetime como tam iz oun nmere comp. oun ip de bjo ave como una lia vnc [al No se datos gabales ase tembros {b] No use funciones globales. {el Neuse miembros d dates pblics [G1 Nowe unions amiga, savo para eit] 0 [ef Nopongnunscampo de ipo en una case: we fnciones vues UN etic te no onnetin i Enel apuriio sConsjoe de cada coptul encatrar el esr norm rites se pesca o cells, Recuerde queens conse son slo ecomenacones rts ie nuts. Con cualquier conso sae deben alice scan sea raztabis Linligensia, la experiencia seta ominy el buch gusto son ssi, pin us as ecomendacons ncptvas(entca haga tl cos) sm iis Ea con- sect nye arte de scons etn formes como sugeencks sobre To qe sede acer nets qe ae seretisnegarvan no sin extar fla com po hiciones acl. No conto ninguna crasersicairponant de Ca qc no haya vise ben vilizada Los consjos no ntenenepleacione, ino qe cala Uno de los re une ffeil apart coverpomerte det ibe Cando canes i dela wferenia poporciona una alternate va seompat jo es negativo, generalment ‘conendada 181 Referencias ‘Aurxue en el testo hay unas cuantas referencias Jirectas, sha reunide aguf una breve re lacidn de litros y otras publicaciones mencionacas, directa o indirectamerte

You might also like