Vous êtes sur la page 1sur 65
© C44 6 reconhecidamente uma das Jinguagens de programagao mais poderosas. uma ferramonta essoncial para engenheiros de software ¢ programadores: profissionais. Aprasonta grands Portabiidade, permite integracfo facil com cutras nguagens ¢bibiotecas, o que a toma a linguagem ideal para o decenvoNmento de software de ata qualidade. ‘© Este guia aborda a linguagem C++, desde 0s ‘conceltos basicos até os mais avancados, ‘constituindo-se em um quia compacto qua o ‘auxiiaré na aprendizagem e nas tarefas didrias de programagao com C++. © Indispensével para quem quer obter 0 ‘maximo provelto dos recursos da linguagem ‘C+, som perder tempo consultando volumosos manuals. © Pratico para carregar @ consultar a qualquer ‘momento, no trabalho ou em casa. GUIA DE = CONSULTA ; — RAPIDA Joel Saade aaa oa Fae +85 11 6950-8869 Email novaloc@ novatocedtor.com.br ‘Sito: wisi movateceditora com br © Novatec Editora Lida. | ‘Sto Paulo Bras I opr i Tok es 1 psa e800 | : S932 ‘won novateceditora.com br novatec Guia de Consulta Rapida C++ Joel Saade Novatec Editora Copyright © 2004 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. & proibida a reprodugdo desta obra, mesmo parcial, por qualquer processo, semprévia autorizagdo, por escrito, do autor e da Hditora. Editor: Ruaens PRATES Segunda edigao: janciro/2006 ISBN: 85-7522-053-5 Novarec Eprrora Ltpa. Rua Luis Anténio dos Santos 110 2460-000 So Paulo SP — Brasil Tel. +55 11 6959-6529 Pax: +55 11 6950-8869 E-mail: novatec@novatec.com br Site: worw.novatec.com.br Sumério Concalos basics, estutora de ‘Descobind a vareao do compiador Compl ot odio de programa nnn Fungges BBSBSBRE8R Fungdes inline. age ee argnercs 8 Tan mah lunges. ERERRRESE ‘Tabela do classes de maméria Modifcadores de tno de acess g 3 8 Conceitos basicos 5 Namespaces... — tos bch os elke de cess. ~ Conceitos basicos t cde ace seu deunprogama ++ Métogos exteres & case - MiladO8 MN ne 2 Seqies de uma clase Gnamacas quatticaca 6 CGonatstr de classas Destior de classes CConstrutor dofaut CGonstrutor do cépia Consiutor expt ‘Acestrutura& simples © 6 a seguinte: ips an) cosas; > Bemento ——__Significado cone a mts ca Ticude aos aioe ios ara ees ee Seicgeancanaemate heneets i eee ats eet So See ee fe meciees aee Passage de iis cone aginis 0 ential da ano rain). er “na natant a St ets fete ree eee wee viata We coe Classes € alocagéo dinimice de meméria .. fr sind ranga sips " cont “al Wr" Tabela de tipos de heranga poem enneem return OF Beenie cua Detabind aves dome vets de heranga (Gadela de haranga) + Nodjapp, digite gce-v + NoLinux, digite g++ Copii link-edigio de programas [No digpp, para compitsrlinkae um inico programa: we -¢ pL.op9 xo plex plo + No djgpp, para compilainkar vtios programas: ce -¢pl.cpp 92.c99 (ur => phexe plo 2s + NoLimux, para compil ‘9 plc -2 pL + NoLinux, para compilarfinkar varios programas: + cH p2.cpe +2 6 ‘Arquivos-caberalho Arquivos includosno programa por meio da dictivafinelude. ‘Contém protsipos de fungGes, defiigdesde macros declarayes. ‘de tipos, de estruturas, de classes ¢ de constates. “Template do classes . Aciasse sting... ‘Manipulagdo do objoios sting com oporadoes. \esipuiagto de objeos sting com métodos Enrada esata com objets srg inkar um Gnico programa: Enda com cin Processamenlo de aruivos rua 9 sada formaiads {utes possbikades de eircaaie Formato Signifcado Voricagio de eras fom __S0t aw Moros do absrtua da acquivos itt ae Pon in acaba wo Goo pao Impress de a1QUH08 won _arqincocabegal nclode “none” Procra um arquivo cabegaho dettiocorere ese Arquivos bindsios, métodos wit @ read) Pau tooo sees RIT (FunTime Type information) Componentes do RTT Tape do oporacaeso precede fale eOMSSH0 Operadores Zz 6 Conceitos béscos Sdentificadores Operadores ‘tonomes datos pelo programadora vaivesungtes lasses ‘etc. Poder conter somente caracteres alfabéticas mindsculow ‘Atribuigao ‘maifculosmmércos 0 _(ubinad).O primero caractere penton Saito dove ser allahco on -(sibishado). E sree ceuneoumuaan Varidvels Example Vasives poem se ecards cm qualquer pont deo de Me et «a etic uma fungi, mas sempre ants de sere ailzadas ord = alr ~ werd «85 /f Heri le Bvenpos: Asitméticos Soke ae ea Qyeador Sido reeds fare ss OS): ; 7 . rst cos 1 Dvsts ‘ (csesestuy * Feandedietocwtettoms =f ‘Ceding maisclas de insu, inclisive cm lgfo ; fio 2 2s ams glavas reserva, que deve Ser excthas en leas : Sirago 2 ndseuls Identfiendores, como ano ¢ ANO so dts. . _ Artmétins de atribulgso Comentiis Operdor——_Sgifade Docunentam o programs, sendoignordos pelo complado. Goendor Sais Sto cscs ulllzano-se os caraceres 00” #1 * uta con abo z Orato an evua Frog ced ra dun reg cs Roa do ene iv cone, 17 Fc sra ciel re gu retesto eer {ec tit's 0." 7 varie! se crete om a Pet Seago con ero Rested ; edhe) ta» wa Tabelade seqdendias de escape Bae, RIAL Patt adl a, As soqléncias de escape sto constnudas pelo caracter\seguido {de outros, Perritem a uilizagio de caacieres que nfo podem ser digiados ou que ttm um significado especial para C+, Incremento edecremento Operador __Signieado __ Forma ‘Aico! eau Precedénda a AST] Some Siw Geauio ‘s TRAE DOTS a ‘cone ) depo 2 a Sis! epee 3 [-« SEE aes ef ‘se ovloratal deX esome 1 aes valor ws ‘ako 0 cam ‘O mesmo vale para 0 operador ~~. comin aE | Ia + Xsgnifcs some Lan valor de X eet use esse vo teas ole ‘aloe mesmo vale pre 0 opeadon =~ a eae pane AS] Toe moored cana aa 7 er a Yxaseves Sexacoa! Pee | SeSiSs SYS PEE epee ope wo pee rea telaionats veo Se Operator Signficado Pecedncia ‘As seqcias de escape podem sec esi de ts formas < ror) Fi caeraenes cele usps ou apésrofon. = Seer ovinaa : Forma Exemplo Nar inal 1 Snes calc inate 2 Hanis patel ches lotto 2 Nmbesoil cadens [Nao podem ser utlizados para comporar strings. P Tr 8 Operadores Operadores 9 Condicional ternério 1 VoRinctsv) ume fora altemativaaum commdo if. ese. CConbina dois valores cxlando um novo valor. o9t ? ep? + 03 Bremplo: ‘Scexp! for verdaeira, o valor de toda a expresso sero valor seplaged sre tae meee Staaer? = Savaonds de eap2, cas convo, 0 valor de exp3. at cc vatrd | valor * cod cells #7123 Beer iy ‘NQ08 Bera) men 2a: ina dois La SCG cm 2 Se? carta ¢ “vn ai Conia dos veers etndo um novo ver, , Example: Légicos \ unsigned short iat valorl « S1,valord = 89,vaTor3: alae) valord valor? ott) ue ce"yaord A Walon?! * evaerd << eal: 1 198 [Nega Ginverte)o valor-verdare de uma expresso, Para nogar uma, eNO) expresso, ue pareniees 0 operadr not em mag proedéncia CConbina dois valores exiando um novo valor. «ut os operadores eeconasedemuis operadores gos. Exemplo: mete oe lee sie ors air = Stale?» aos : (Gio ssalrt vler ere ssa Had aut ce valor & valor2: " << vaor3 << ents // 17 Bitwsealteratvos a (08) ‘So operadores bitwise l6gicos na forma de palavras. CCombinacans xpressbesem ura, que tréo valor true ou ie empl and exp? ov exp WA exoZ Operator padrao _Operador alternative Exempla: const xaT>bard3<5; eal 1 ‘bltor : * mr oD a band | consasaumexetsemana doris ile & oe pt or exp2 ov exp LI ona? . ode Beemplo: anc . xe?>Bor3<5; //xel t Tabla de precedéncia de operadores bitwise radar Sigficado Precedncia sie ee eeERT ‘Manipulam bis de valores itis. x Deserarnt osqueda 2 > Deas eh 2 Deslocamenta de bits de um valorinteiro & 3 valorOotrd: ITN ‘ pot lr (4 po tt) conver aur pti tp ear” Po. ‘Comandos Comandos: 13 Comandos Bement Sinificado ‘episia ~ —Erpresdo asx compared com cade ura des consis, Bloco ‘ev outa on ur alr do pois, ‘Comandos eeritos entre }- Os blocostém uma propriedade: se ume nova variivel for definida dentro de um bloco, essa persistii enquanto a bloce estiver em execugo, Ao tmino de sua execagdo, a varidvel deixar de exist. Exemplos Sot valort = 206; Teele oo bloco int yalar2 = 205, aut ce "aor (m0 Blcea) (ut ¢"Valord (mo blben) = "eeralarace ancl; // 200 31 Find blocs fous cc “valerl (fora do blots) =" > “aight a seas Br hey Hf st ee 203 1 wile Gena esi coat che coh cc els kes Af exp3 @ escrita o9 corpo do Toop: ‘oops anihades Loop asinhado: um loopcontidoemeutro. Noexemplo segui cada iteragdo do for extemo hd 3 iterapbes do for interno. Ooperador,igla) Permit uso de mais de uma expresso onde uma 6 permiida. Exenplo: 11 Vp exter ft k, sont; ej ceeds t Hh GMD bh UF Yen cr wile . james Sah Execula comands enquanto una condiglo for verdadeira, Desi : white Cem lo cores ‘beak emento Seriado ‘Salta partes de e64igo saindo da estrtura (for, while, do while % ‘Geran ua expense acl ue certo clon Se ‘ouswiteh) onde se enconta, comune apex aoc, breaks blvereeaiieatedibanbevaeenineionrs ‘A seguir, a sitaxe do comando bresk com o comanco while: capo wate (00) Example: t neko 1, sonar =O: // Som os valores de 125 onan win es AF (eondigaey cust ce "ea te kee break; // encerra o Toop ¢ desvia para comando? sonat = sonat 6 E comand? eek y oat ce endl ce "Soatéctor * ee snaty << emis // 15 comand exppode serum expresso que enquanio results em valor diferente 420 mpicar a execu; do lop, ea0 centri o trina: contin Salin partes do eédigo de um loop (for, while ou do while), Premio: x ‘cavsando um retorno & sua expresso de controle. shite GO contiowe; ee cen fren asitaxedn condo cote coocomando wll: egestas seca : ‘ vise tt ec omedes nq une conto frei © coi erent deste corpo do loop & exceutado pelo menos Uma Yee, cen noes © oun corpo; , while (exp); goto Bernenta __Signiicado ‘Desvia para um ponto identificad, no programa. oe Gceannsopmatriqmseiacb 5 we cum an S eras 0B ona beng rect ge = 9 ono Shttttnenatbam ep nina oom caniver mais de um comendo, eater ke ( po 16 Comondos / Pré-processador ceturn Retorna tm valor, terminendo a execuedo da fungao onde se cencontra, Fungdes vod nao preisam de return, return valor Agumento significado vbr Vale de-siomoexrssin varie contarigoucharca uma tango Exemplo: ec guadratocin): 11 proxitign ine main se quad = quadea(3); ff chads cout ce "Guna: gund Ter 9 plogama ons o argo catego, que rd proctrags no daliopadtdo os argos cabo, {nei no programa dota 0 aut caeralho, qe ‘ser procured ro debe comets ¢ so no for ‘encentrade, no dieio-padrao de arquvos- cabopae, pragma some Data detrida pea irlorentago do coma Pate qa nse espacio jm dads an ‘compl Femoreadelnigorais vane crap deta ‘datne include “argu funda nome Pré-processador v7 Diretivas de pré-processamento/compilacio condidonal Perrnitem a compilagto de partes de wen program, ASF expt cédigo-foted elif ex? cbgigo Foe? «.) laeise ‘igo Fonten] featit Hemento Descigio eat Expresso rsa a ser vec cdigotniet ——_Cgpnteasu ample ver, ext Enresdocerae & serve: 20 omy fr faba. césgo‘one2 ——_Cgolonloasercarlido ca eg veradeie. bape gore est copia ep! as ex? er (aba. iret dt nicador cbdgofonie al fend cark compass. ‘inde! itetcecor 0 Iderticedor no loi dato pare 0 p= oeessater occigofomeatbRend sa capiads, ‘Macros do pré-processador Mace Desaigo ~.sphspos So cai, popemaroie sar Wl como on pogamaCi. Data ca ese do pre-processed. ‘Nome oo agus qu el Sond roossa pels é processatr. Nemne da go caren timer ¢a iota do program afte que es sordo pecessalapeopr-processade.Podeearatead pla aia tae, ‘Secfida com oval nica que ocompindantide deo com pata WS. > Exempla: fFincluge cstrinp —// para a functo strlen ie ing Cc ‘har eouel357) int td fut ce-olgite seu nove: // string a garni do veclaio fd © seTen(rom); Gouc cc seu none Cen ce ghd ce" caracteres” ce onl; Feturn ) Resultado do programa Digite sev pone: date fen soe ten # caracteres ‘Supondo que o programa seja execulado novamente: ght seu sone: date praca ‘Seu nena ton 4 caracteres Embora ara nomeposss amazes rane cone nazenefo fpinas dat, poque in >> fala um sing 2 ler un whitespace imeeindo um sear rao. TO Tipos de dados Leiturade stings comos étodos ete eget) set( atai’como getline(, mat deixando no buffer de entrada 0 ‘erate de nova-inka, assim, um primo gel poder 1. ecTine | oct (array, gta): ‘Arqumento—_Sigificado ray ———_‘RrayGocaradarsonde oscars soto eras. we ‘uarkcoe de conore anc amzrads, mows I. ‘ined itnsescentendoeoueorecanciersdetbulafofaiando ‘entrada quando Socaraceredenova nha (ero peltela Ener) ‘eugiendoolimite nica pega angio, oqundomer rine. (0 carslere de sovnlinta 6 redo do ber de enala seo substiuldo peo cractee mul, que &insidoao fnal do aay, Exemplo 1/8 da slags a parte tla co 9 tole re wing) mam “0 23 tar nom), eersla faut ce bigite seu ope comp te get (rome, 15); SingetQy | / Ub 0 carsctere ee "bgice seu espa favor ‘get (esportsslys © ou cin. gett wien are treo espn y e 1 lose rogram pte sr cect, cm ato gto: cin. get}ine(none,15); serine: ae aig ie tre fork: * Snactretepore Gein Pait €= c ear * Estruturas Estrutura é um tipo eriado pelo programador que permite a armazenagem de dados de tipos diferentes struct gatarite Signifcedo ‘oma do gar de eta oso de um po arbres. Os seus ios ce caoscocemsaras Diss do Co, amays eos estes, Exempla: struct produta se cof, car none 5]; 1 carta de eserutura Uf venbro : 17 ventro Pradute prodl,erod2; /7 variiveis-estratura do tipo produto ‘Uma varidvel-estrutura pode ser iniializada na sua deckaragio ‘outer valores atribuidos apés essa. Oacessonosmembrosé feito no formato varidvel-estruturaanembro Exemplos: OU proto /f ctarto de etre 4 2 ames Mase aor (Produto prod -{"tivro™,1.5}; // Inicializagiora declaragio 24 ‘Tipos de dodos oot nes * ah ee en feat Se lor: ce prodisvalor << el; ngriuigaa de valores aps a Geclaracao Metis eit 17 ee & tae eey0 ine raind © crac produto /) Cabarite de estrucura © ac none iS; Float valers Yue grdts_ fvarioe-seoea orl Fe ete lu “ee prodL.cone << end valor (fear ae estevtra exterra strece proto c char one(I5]; float valor: k {ote alter(protte *)5 (7 pretteipo da fungde steer {ne wind t roluco pradh = {"canets", 1.5}; Tipos de dados 27 ateer(prodd; / Argmento: endereg da estrvtura ut cc vestratura depots 6a chaada” << endl; ut << “rane: "ce profl.noce een (gut ce “Valor: * ce prodivalor ce endl; return 0; + veld aera * po) /7 vein fant aero src grt-vme “apse: rotator <1 » Exemplo: Rferénca aos membros plo operador =>: uso de ponteiro para aestntura sagen de nubro do wa estratura, por rferécia 11 erostipo d ng wer Bret arte // caarico de esiatere 3 OR mms Fane ater DProduto prod = (10, “canta, 1.5); ETter(grol.vator);//Arguento:eniareg do webro valor return ) go aera ror) 1 eno fa see alorh wat 1.35 cout ce "exe valor 1 truturs como vatarde retorno de fungies ‘Uma estrutura pode sero valor de retomo de uma fangio. Exemplo: stract prodte U1 Bera 0 nesbro valor original ‘cevalort ce endl: 11 Cabarita estrutara exteraa 4 eet os rodeo eesteuet); —/) erexivipe da funio nesta) fee ming c produto prods /) Varidvel-estevtura prodt rod metstrucO; /) chan a fungio mecsteucO) (out < “Estrutura retornada ~ funda nein" << ends fut > prodz-nane Fete prod; y ‘Alteragio de membros const © atributo mutable permite que um membro de wma estutura seje alterado mesmo que uma varifvel dessa estruurn sea const, 28 Tivos de dados Tipos de dados 2 Exempla: -Autuigiode valores sem types, uma varigvel numero: suck cometader conta ai é car cpul20};—evtable int rm oss capuatorniro = (retin 4,220; ‘Sers.ten= 36 Town ce ier. <=": {Om err ce" cen Com a variéve-etrnura mlero & const, seus membros nko podem ser alterads.Oatributo mutable climia tl resrig, Unies Uniog um tipocriado peloprogramador que permitearmazenar tipos diferentes de dados, mas un tipo por vez. on gaberite ot Troe derigdo deur gabario pra ua wide. Nome do gaara da no ou rome dum tp, ‘Cada um cos meres dai. agistre fines famcsidant = 123; UY aenaagna enor it cout ce fangsidemt << enfly” //'bxibe 122 ‘fine. salarta = 280.555." | // Armaena valor devbte coat ce fire-sdlarie < ends // Exe 250.35, fue ua vive copes, Poe arazena ur valor dtp nt vd tpo double, Enumeragio Forma alemativa & const para a definigdo de constances simbolias, que permite a cregto de novos tips. em (aoe) (eiaraserl, rersdo, ‘Bemento Significado ‘enum Ince a Stnigte dora enuraragso. one Nome de un fo ton, domitacs enue erumerador —Corsianiasinbolaa. Exenpl: enue cor (areto, vereetha, axel); ‘er € 0 nome de um novo tipo. preto, vermelho e azul sio ‘constants simblicas enumcradores) para os valores intsitos e022. ‘Como enumeragie implica a ciae30 de un nove tipo, entdoé possivel declarar variveis dese tipo: cr cortts Avibuigte de valores, comtypecast, uma vridvel-enumeragio: corte cor(@);f/ 2 sofre um typecast para tipe cor ‘Una enumeragdo pose ser utlizada para definic constantes simbsticas sem eriar nave tipo: Exempla: nus (asl, preto, veowetho): int cod cor cout ce “bigtve o cig da cor (8e 0a 2: Ein >> coco ars (aden case amt cise peta: case Yernelho: cout << "Veruelia! cc endl Break; Ponteiros Ponteiro uma vardvel que armazena 0 endereso de um valor oes valor. Supondo uma variive chamadaidadecom valor 9-¢ armazensca no enderego AIZA, Um pontico para idade srmazenariao valor A12A eno. Um ponleio pode apaniae para (0s tipos de dadas de Crs, arays, fungbes, stings e estuturas ‘ipo * owe-ponceiro; Henento —_Signifcado ‘go “pode da paraquat para wdapenta. . Carat iniatv do um post, Exemplos: fine pei // Poncelro para un Sat rio fnctaizao Float Sado: ‘oat *pef = Bsa; // ponetro iniciattaso /f wos que referensa 9 enderega de uma varsével 1, Portoiro para uni [1 Kerio enderage 6a varldvel x pte ait << varidvel x cntéa @ valor <%: (out gue) ‘ 4 cout < “Yalta de ori return 3; << emdh; 11 atc o valor 32 0 enderego canto 6 ptr Gi ceca oo edeeca* ce pr ccs * Sooper cee out cd bovan”ecstxnpr) c* ys” cee dieee ver ) 'Natentativa de locago pode ocorer falta de mena. Neste ‘eso o0peridor new reiomaro valor Umponteirocom valor 0 € denominado ponteiro mula: nto agonta para nada, O ‘operulor delete iberaoblocoalocado semeiminaroponteiro, ‘qu perf aponar para out bloco de mermira Aras dines ‘So eras durane 3 exzeupSo de um prograna pelo operalor pew, qu aloe x quanta de memnéria em fungi donner de clemenios do array. Poatcros deve ser usados para acesso -Nreaalocoda, poisnewretora oseuenderesoinical enderogo do I" elemento do array). O ponteiro a ser utlzado com 0 ‘operador new pode se ncializade apd sua declaresi0 uno momento desta {A declaragiocomincilizagio€remethente3do tem Ponteros 0 operador new, pig. 29: ipa ¥ noo poncetro = new tigo tae. eTeente]; 17 vectaracia do poateiro ptr = ren inn (5); // Yniclatizacio aps a decTaragio nt * perl = new fat [5]; // Inictalizngto ma secToracdo 1, Klcagho de neni paca un array dininico Sng 1 pee = now Se (HE ptr (0) =, ote By = 2s cure ptr [d) cet in fut ce pte OM) ce fue ce ptr (2) Gletor indireto de memo). O uso de ponteirosparnesrturasimpliea © seguine sa ptr um portlro para uma esrtira edo pt representa velorpontado (apropriaesrutur).Assimé valida © oess0(*ptspentiro, Exempla: Acesso aos membos pelos operadores-> ¢ fer profits / carta de estritura har rone[5}; oe vata produto * ptr = new produto; faut ce “Nine do prota: cin >> perenne aut ce (pte) ear eelete ptr; Typedlef-Nome altemativo para tipos possivel err nomes altemativos (apelides) para tipos de dads existentes. ‘typedef ipo apoTidoy Fxemplo I: Uf sexeiro & a apetiga paca o tipo dot ‘ype foe tree: ‘ateiro contador =; Exemplo 2: LL types com poet ros. ptireziro & un apa para int * typedef fot * ptiteirs Frieiro ptl nt valor; peed faaloed: P 38 Fungées Fungbes 39 Fungoes Retomo de valor e recepcao de argumentos "Fangto 6 um conjuniode comandos que exceutam determinada Na utlizago de FangBes hd quatro casos em relas80 30 valorde torefa. Uma vez definids, ums fungio poderé ser chamada ‘etoma © & recepeo de argumentos. ‘ras vezes om um programa.¢em pontos ferentes, evitando 2 repetigio de igo implicando modulaiaago do mesmo. strutura de uma fungéo ‘ipo | wold aone-funedo (Cargmentos ...) | (void]) 4 conandot; comand; Hemento_Sigfcado i “Tpo do vara ser etoac plating o. voll Pins vi idea qu a ano ro relma valor. -umenios Arguments passat uno, sepaados po’ void Segundovoiindea que alunionforeceber areas, a Indcam oi #0 fn do expo. AA pret linha 6 denominada eabeglho dx funglo, Os comandos entre { } constituem o carpo da fungdo. O cabegalho 0 corpo compdem a defini da Fungo Protétipo de fungio a delangio do ua fngo que indica o ipo de valor de relomo, x guantiddee op dos arguments, Geant & cee wp os arquivs-caeyao eases de mala). Tipo | wo nme CLargoenor «| GWeteD; Exemplos de prottiposfeabogalhos de FungBes: Protsiga abegalo old meni ‘ald menu) oid kop valor; val opfet lord int it ese ese lot somata tag, Int sorasn a, ta) [No provdtipo de fungies que recebem angumentos,o nome de ‘eda argumento aps o tipo € apcional, camo por exemplo: votd Toop(ine valor); equivate a weld Toop) Chamada a uma fungéo Efeitacscrevendo-sconomeda funglo,com ousemargumeatos, conform oe prot, evan execu da mesa ‘Exemplo: include coutio incmaino I para a Fang sar20) ouble r= saet(3.):_// chana a funeto sare ut ce "A rate gadrada de 9 2 "cee ce en; return 0; ‘Como a fungio sqrt é chamada na fungio mind, diz-se que: sqrtQ € a fungio chamada e main(), a funglo chamadora, (soc Fungies quendoretornam valor nem rece argumentos ‘Obedecem a0 seguinte modelo de protéipoe cabegalho: etd nase (vot) -Exemplo: Fungo que esibe 10 asteriscos wid exited; remain M1 cara a frgto exibeO, ) oid exiteQ) // befinigio da fungi exibeO for (i col = 1:01 « HH;col cat ses ) (Caso 2:Fungbes querecebem arguments endo etomam valet CObeecem ao seguinte modelo de prottipoe eabezalho: wold owe Cargurentas [Na passagem de argumentos, dois tipos de arguments: Argureto _Signfkade = aque ltd re chaste a una iro femal aque zado mo eabraa dno head Bxenplo: void qadradsine);—// erottipo da fusio qadrett) fre) Sint mmr = 43 ‘uadrade(rumero);—// ewnero & 0 argument read ) nueee: vel andr amet) // mar ¢ © armen for ‘cout << “sda: -& (punerot © suneret); (as03: Fungbes que recebem argumentoseretoram valor ‘Obedecem ao seguinle modelo de prowtipoe cabegao: ‘ipo nome Carquaentas ...) Exenplo: ne converted int); 17 erovuipa dy Fogo converte) ain fine horas = 10, nautes; nutes = comerte(horas);,// chanaa coo argnento fou cc winetas ce" winitos” 29) ke. reeurn 7 Ratorra 1 on caso de erro ese inutos « horas > ae ce Mnutae ce" instos” << endl; return 0; // retorna 0 en ca de sucesso ) Tipos de passagem de argumentos ereferénca ‘Quardoumafunsio Echamadaeacstasiopassadasargumentos, 8 passagem pode ocorrer de duas formas: Passagem —_Caratertca Pervalor——_ Alunochardarcsbe on asus agunectoeforvalouma pla ds vate dos arpumertos teas, O8 aqunenios ‘ab so dstrios dos resorts arguments fra. Os sgurerioereiseioioats tunochanadcraecelomas, ‘nyo charada (fat. ecendaega lungae chemade reebe am seu armas fomais (Gorton) os endieye dos argunenios real. A ug dua lomacesoas vats da rgochamatoe pis asvarives so unas, (C++ acrescentou um novotipo composto: a varivel refertneia, Referéncia é um nome altemativo (apetido) para wma varidvel, Porexemplo, s¢ Cli for uma referénciaa varifvel Cliente entio (Clic Cliente referencia a mesma variivel, Arefes€aciaaplica-senosargumentos formaisdefungBes. Caso fem que uina funpio chemada recebe em seus argumentos Formuisosenderegos dos argumentos reais, 2cossando-0s,como na passagem por enderego, mas sem a uilizagio de pontetas A passagemn de argumentos que utiliza eferénciaédenominada passagem por referéncia, constituindo um terceio tipo de ppassagem de argumentos, E obedece ao formato: pe & apelide = vartivel; Elemento Signifcado eo ‘pods vavel 4 lndeaor ce elena. spats pala ee varie ‘A declaragto genéricaint & apelido= variavel: dizqueapelido do tipoint&, isto€, uma referéncia auma varfvel do tipoint, Fungdes: 4 Exempla: Passagem de argumentos por velor ‘yeid soni Hn) 1 Brot dango sonar) eat sn vale = 1, valor?» 4; seratotor aie 2/1 Can 3 fags soar 18 eenarnt vin 2) 1/ Deine da fg or sot total = cane ce dig we woe toa ce endl // 50 Exenplo: Passage de argumentos por endereo vei smart *, tat 9517 mace Trg soaro 4 ‘ine water» 10,yalor2 = 40; cout cc Nader] Gentes): “ee valor ce endl; 20 smmar(ivalorfvator2);.//,chana a feng some) ‘out ce “aloft (depts): "ce valor se tally 1/99 return 0; ) oid sonar¢ine WL, int 82) //0eFinicho da Fuge sonar) fine total = Wt 902) Get Exemplo: Céleuto do ftorial de um nimero stoned int fatoriat (int); Sine aahn0. i unsigned int resutt; nt numero: tur ce “Uigite ur ninaro de Tt in ame resule = fataria} (quer); Gout ce "0 fatarial € "ce result cc endl; return 9; ) ‘sand fc foie ane) unsigned int fat; HF Gomera «= 1) fend ase ax x nmerot + ferorialrumerot - 2 return Fat; p 42 Fungdes Argumentos const Varivels pssidas como argues por endereso ou por referdncia podem seraeraas pela fungo chamads. Pare 2 Fangio chara mo aller ariel, -se J argent aque no pale ser lead, um argumento const. Example: Argementos crs, com passage por enderego ois altertne Sane tne! Trend c valord = water? 4s Bee Sadar Gree): Se water een 1] 18 Sit eater? Gove)? * Se alr? teal 12 chara» faa ster ERED ptt: catord cca ff 2 GRE cesar? (Gp)! * coward cen 17 Stora oid sence utcout ne 4) © eno 1; ; APD a 8 ero: v2 (vaTor2) & ue argument const ‘Argumento-defautt ‘Valor uilizado automaticaments quando oa argumentos reais so ‘omitidos ns chamada uma fungao, Na lista de argumentes, 0s sxgumentos-defoulldevemestar diretadosargumentos mais, Exempla: wold svbser(ar *ne mar © 2; // argmento-default 1 ne m9 ‘ subst aco return 0; 2 oid subsceCchar * string, Sot ne) t cout >——Nalatra @ andious a svn amazeodse on ar ‘ati do pos box, pra hese a Nebo uo, a lea de ngiinoa co ears, no ‘cna whinepces. Coracteres podem serlidos at ser encontrado um caractere que indigueo fim da leita 0 caractere sentinel, Exenplo: Uf weitura com cin >> e uciTizagio de caractere sentinels ‘har caraees tnt ont = 0 out ce “give una frase, termina con 9°45 white Caract ts *8") t Gin carat; a ck gts * cant "cree ets Resa do programa: Digit ma rte, cermin con os 2 Maggs ea igen arte Orta epantonatscrecens Conch ier, Ocpramixedgoecalmans tlre Poattarseoocn Obed ge tata tach pret ge, Classes de meméria 45 asses de memoria Refletem formas de gerenciamento de meméria que varan. conforme ométodouilizadoparaalocar emis. Ov, eeret- 5840 periodo durante qual uma vtidvel fica ns meméri Escopo Refere-ss0 local em um programa ond uma vaivel pode ser sada Escopo de Significado econ A el pad er vada aja ro Boe ond deence arao(geba) vata pote ssa am pra ato pons nde tra. Ligagao Indica, pora urtia aplicagao multiprograma, se uma varidvel seri ‘sada apenas no programa onde fo declarada ou tos demas, Ligacio—_Sinifado intema Avail poe wor vada no raya ene locas cetemt A vaivel po er wats p progiamas co una apicapio| ipograra, Classe automatica Implica a alocagio de memSria pare varéveis, em selagdo i lexecuso de um bloco. Nessa classe encontram-se as vardveis: Varisvel ——Grcerstia sviomites Deca om una une, coo sambem es vaRiueS ‘queoto egunerie da feo, Temesoapadetiowoesen gap. € erat quando 3 fungboc ond se enon, Inia a sue executdo decade eisr quando a nao! ‘ona lamina. Por ier escop de boc, & chamads @ valde local register Daclarada em uma ‘urge. & outa fora do vive ‘viontica, Tem espa de taco © sim gop, A sa jardow pemendnca io qua fda vaive euemdtca, Exempla I: tino auto nt contador; // varivel auton Essadecarepdotmpct (usapulaa care acto} Compasvaives ‘eal po cfu atomicas,gerabenie auto oni: Exemplo 2: ‘nt ming ne contador; ‘nt sain 4 reghster int cantar; // vartivel register ‘A palaea-chave regi "pac" un oid CPU Talpedi seat ‘aldo ound, gis ponder do concer, 46 Classes de memério Classe estatica Implica a alocacio de meméria para variéveis em relagio 2 ‘execugio de programas. Vardveisesttieas so criadas quando ‘oprogramainiciae ficamnamemériacnquantoomesmoestiver fem execugSo, Podem ter escopo de bloce ou de arquivo dcpendendo de onde sfo dectaredas ¢ contam com 3 tipos d= ligogHo: Interna, externa e sem-ligagso. ‘Varisvels esttices s8oinicalizadas apenas uma vez c 8 scus valoressdo mantidos entre chamadas 4s fongBes que ascontém. Boel: wei ee 11 rip fg Yon eats con "ru a." ox Ste “Zp comes lors awe Yet 0 11 oth foc Yn) ‘ ‘int cont = 1; I? arlivel autondticn vie ite sc; 7/ Varese era forg.enee cout ce Somtirio «ce somat ce endl; // 28.630 , vate ava cot iad cata chan tuo oop) 23 valve sical soma, univ, Tiposde asses estas ‘As variveis da clase estética esto assim divididas: Vateve Garacterisiea ‘sttcalntarnaeslerada em um bon com a palavarchave sal, ‘cand sponivalao ppb, Temescope deen ‘sorrigagdo conde uma verve atomstcs, ‘eanamaraepresonac sovvaenrecharadas furgo quo a cari. Tabi chemuda de varia extn local tia extaaDecarad for de quar loc coma palaachare ‘tat eardodaponvean pograna onde iced. “Tar espa de argv @iapdo ers. stitoa lobal_Declarada orace qualquer boo, and donc proyamessouraapleapionutinegana.Temesopo ‘aie (oto ogg ontana Tanbéectamade e ariel externa ou vate global. Exempla: Hiaclade nt meses 22; 1) vars gba sinie ine oral; 11 earibveestitica extema 20 static nt dias = 265; // vacvel esta fncerma Aeferéncia.a uma varével global ‘A palaven-chave extern referencia uma varivel global em um ‘programa outro, que nso aquele onde foi dectarada, Como una ‘vadvel global pore ser usada em vstios programas apenas um dove tora sua declaraglo. Os demais deverso usar a palavra- chave extern, pa losses de meméria Bremplo: ‘sacar aTiprograna, 0 pogrena Tas? aces program las] 1 casi incl efostream ‘bing mnespnce Float taxa = On12 560 = 2.5; ‘oid exibeO: ne main exibeO; atura O; y Uf caste Fecluse dostresm sing nvespace se ferteen Flore tara,saldo; wid extde0 ‘ rut << tara 67 tara 4 endl; ) Classe dindmica implica a alocago¢ liberagio de meméria durante a execusto ‘deumprograma. Asopemn¢Ses de slocagioeliberaclo so feitns pelosoperndoresnewedelete.A emériadindmicaécontolada Por esses operadores, ndo plas regras de escopo e ligagio. ‘Assim n memécia din imiea pode ser aloeada em uma fungho.e Niberada em outer, Tabela de classes de meméria Se ain oe ste wee | main Modificadores de tipo de acesso volatile Indica que o valor de uma varsvel pode seralterado mesmo que rio haja uma instrugio explicit no programa que efeue a alterago.O compitador pose faze timizagées no e8igo, por cexemplo, quanto pereebe que determinada varidvelnotemscu valor slterado. Isso poderia levaro compilador, como forma de stimizag,sarmazenartal vrivelemumregsiradoe.Supondo que aalteragto do valor da varivel sea feta por um elemento extemo 80 programa (como por exemplo, uma rotina de interupg0) e que ocompilador no perceba isso, a otimizagio poderia ser inconvenient. Nessa caso, 0 contedo da varivel € alterado, mas no por uma instugao explicita do programa. Para gue © compilador nfo faga tal otimizagio, utlizase 0 rmosificador volatile na declaragio da vardvel 48 Nomespaces Nomespaces 49 Namespaces [Nomes em C++ podem se refer a vavives,fungies, classes etc. conceto de namespaces vem com o ituito de controlar ‘0 escopo de nomes, permitindo 0 uso de nomes igusis sem confits. As tés formas de namespaces siuo mostradas a seguir, usando 0 namespace predefinide std, que coniém os ‘objetos eine cout. Farmat: Uso de identficador de determinade namespace, nove #2 fdenetFeadors Eemento __ Signifcado nara ‘No do namespace ‘Heniliceder —Wesiicacora sar wllieado, condo no rdmespace, Exenplo: ‘irelude ostream int main) fine Sade; stdsicout os vie. Exemplo 2: Método piblico acessavaridveis membroprivadas ss care Uf declaragio di clase carro public: eid arribO; // protétiga do nétedo atri6Q) void exioeO; 11 pretétipo do neteds exibeO inate: Uf Serio private Mfr adler: tt ary Ine asin) { area carts ria 0 ebjetoearest Classes @ obietos 53 carrol.atribO; /f objes carrot cham o nada atribQ) Eker eibeQ; 77 Objet role ota ete) return 0; ) old caro atrihO 7 dds eos tribe soe carrot aut // far 3 fancto serpy) class area 1 seclaragda ah classe carro plies Uf Prxstipo do corstrutr default con valores default int = 0): wearreOs 1] erotiipe do desertoe wid exibeO; // erotitipo do nitedo exibeQ private: ‘hae nodelo(7}; int aofeb; carro caret( corsa", 299; // chana 0 construtor 11 cbjexo nia inicializado por causa do constratar default ne 58 Classes e objetos cout << “Modeler * xe modelo << end); nat ce "anos "ce anfab << endl ce end; Zaeo:t erro (har # ml. Se wl) /) costar i 11 oestrator cea ce “Desttunde 0 objets... " << madelo ee en, ) ‘Resultado do programma adele: corsa foo: 1989 rodeo: at 0 o Deserving 0 objeto Bestruind © objeto =. Corsa Creat oben erro ox ‘em reco" pot rsaleedocom os valores eu Exemplo: Forma 2 include estrinp —// para a funcao strc) gies are 7P beclarag dh elasse caro pubic: 7) Proétipa do construter nio-cefailt fareo(char*, fm: Carre” 7/ Protétipo do construter default StarroG; 17 bretétipo do destrvtor eldest: 77 Hettpe tel ext private: har odelo[7]; fmt anofab; K int mind) U1 erin beta, chaande 0 censtrutornlo-cefaule farro carrnCcorsa", 1995); 1a i iach ct do coset tee ‘arranenbeO ‘hee eneQ) Frure 0; d oid car 2: exibec t cout < “Modala: * ete) ble are chm oat ee ete prs return 9; y spi rds eto 1 sfc do ts ete come 46 “area ce marca ce endl ye SC 6 a eth rd hard (ear *warcatfloat clock) // canstretr sorepy(area parca): eee tard =: tardo 1 veseeator 4 AE aoa * seme + Astinhas ard cet2cintel) aed Ines = fel hard Snreta = bardcincelD; «ria inicilizam objetos pati do objeto te. Mestram as possiblidades de chamada 20 construtor de copia para objeto com nome, A fina hare #per = new hardCntettD; chara o construtor de cOpia, mas usando ponteiros. Assim, urn novo objetoandaimo écriadoe inicializado coma atibuigio do seu enderego ao pontsiro ptr. A inks delete rs Tibera a rca de mennétia slocada por new, ocasionarido uma ‘ekamada ao destrutor, ue dest of 5 objetos criados, ‘Hmsis2casosemqueoconstruor decopiadefaaltéchamado: + Quando um objeto copindo (passagem por valor). + Quando uma fungla/método retomns um objeto. 60 Classes @ objetos Passa objeto por ator a uma fungio,chamand oconttrde epi: Exenplo: toclude Uf vara a fngaa streoyO, ais ted 41 boclaraao da clase hard ponic rari(char *,Flout); // Prottip do constrator ard; 11 2eotbcipo do Besteutor Ghar warea0]; Float’ ock: k oid extbetard)s 11 Protiti da funcio exibeO) ne main hard toteld(unel Penciue &°,2.2); // Chama o corstrator seine): 27 cova funeia exibaQ) } - tard tard Car ¢ mrt, float od) 1/cmtate strepyacca marca; lock = eloekat , Bard tao 1) besteutor 1 68 astra oct yp exten) 1 etn de eto ete cost <¢ areas * ee ineltLrzrea ce endl; 3 ORES eke +e te hak es “ec marca ce 8); Coma passogan coatjetoinist per velar, aetecnan cocoanut so desis bos. Caso apassagem doco salsa por tefetnce os porenderega,aexesdodo desu inplcaréadctgso ‘dounchje,pizndotaveoipscobjelo Intl eocunsouordocépia olutro arcana. Construtor explicit Em visas stuagdes, o compilador faz converses autométices (immplicias) de tipos, como por exemplo, em expresses arunsica ¢aribuigbes. O mesmo pode acorer na ulilizagéo deconstrutores quereeebemapenasumargumesto, Emalgums situagGes, esa eon verso implicit no € conveniente ow pode geraremos, Prainibi-la, qulifica-seoconstrutorcomoexplicit. Exemplo: Finelte ostream, {og anesace st; class teste Af bactaragao da classe teste abies ‘me valor; RG tot «0 merger 17 enserae sei etic voip ec lotr ns « Classes ¢ objetos 41 old exibeeaste arg) //cfinicio da fang ndo-renirextbeQ) cout & arg.vator << anil; Resultado do programa Arguments do tige abjeto: 44 ‘rsenta 0 tipo ime: BE COprogrsn 6 exec nomaimeia, Alin cue podetacasar e708 aque ctama angi exba eel, pois eseung pea resbet “umargvete do potest ion int (alr 9), cove passed, Isgofelpoestvlpoque ocompi conver rqureni capo intns ‘poesia pels cantor eee ur argmets dopo nt Par av sisdconareie uss apalara have expla defy doers caplet testaCiat valor» 1) : valor(valor)// Constrvtor ‘oquelevarée ur re a compl incando qu oF intro pode ‘secant no po teste. Array de objetos ‘Array cujs elementos so objetos de uma classe Exemplo fs 1) snichahica um atay de ebjtos com tao nio-concrutor Uf rara 2 fngio strcryO lass car U1 beclarago dh Classe carro aes W019 atrTbQ; _—// Proto co néteso anrib() oid enibetin): 17 Pratt do nétosoextbe() privace: ‘har nodelo[7}: int anofabs 1] nery 6 cbjros con 2 elementos 11 Ciara 8 éto80 arb 11 Chara 0 vétola se1b0) aceib(— // Atrbul valeres 40 array static int ramcar = 0; stregy(ndelo, "C01 ‘amafab = 201; cexdbe (rurear); » oid carro:ceetbe(ine uncer) // exfbe valores do array cout ce "objeto * << macarh «en aut Hf ita a Fong strepy) pears 11 peclaragio ta Classe carre Nie: PONS mde) etd entbel) cons h {ine eatno ‘ carro carro Uf cria 0 objeto carrot Strepy(crcol endo, "co"; carrel-snafab = 269 fet ‘Argumentos const ‘Varidveispassudas comoargumentosuummnéiods por enderego (ou por referfnein, poder ser alteredas por este. Para que © metodo io aller as varidves, fare do argumento que no pode ser alierado um argumento const. Exemplo: 1) aegneno const con passapin pot endereco ‘incl narido(char * wow flot salartott) ¢ stecpy(onel tome); Sstarfol = sufarioll: ) ferido t } poss C + warido( —// bestrutor da classe maride esposachar *nene22, Moat salariod2 Moat renda22) streny nee? e022); Salartod = salaried2: edad ven ) esposa + esposaQ) —// Sestrutr da classe esposa } yo eters Heo a) // rue frien cout 4 “hone: * <¢ i. woReL << en; faut ce “salarigr * ce kivsaTarfol ce endl: fut eames gw raRe en faut ¢e“salarios " ce nivsalariod end) Nec Ufeara a fun strcpyO) t 17 cectaragio'da laste carro pabtic: ‘earro(char *, 408); // proxie|po do consecutor “ares Uf Protatipo de destratar wld extieQ;——7/ Protatipe do modo exibeQ rlend lass feareo: // Classe oafgn 6a classe eno POGar modelo]; mt arabs k class fearco // veclaragio da clase anign fearro wibtic: wid alel(carro 8) yy meter ‘inc main() i 1) wrottipo do néoto 2it10) 1 rattipo Go nota aTt20 carro carcot(scorsa", 1985); Fear fearcol: out ce antes da. aTeerag {arrolexbe Qs Fearrel-altl(etrrol);// passa argunent por refertcia cout ce “Depots ca alteragas” etrfogl)./7 canerstar 1 strepy(stringh stig); fetes tad 1 oestewor 1 (Gitéros para asobnecarga de operadores + 0 opecador a ser sobrecaregado deve set um operador ‘aldo de C++, mas nem todos pve ser sobrecarregoes. + Operator a ser sobrecaregado deve ter pelo menos um operand que set wm tipo definido pelo usuria + Umoperar no pode se utiliza deforma viola suas regras origins de snare, ‘+A precedEncia dos operadores no pode se alter, Retorno de objetos Umaiétodo pode retornar um objeto. Oexemploseguintesinda aborda a sobrecarga de operadores, mais 0 retomo de objetos. Exempla: Concatenopso de 2 sirings, com sebrecarga do ‘eperador + include // para a fungbo strcpyO gas tate U7 beclaragho ta classe texto patie: ‘exte(char*); /f Protbtipo do construzor reateO; | // rrovitipo do construtor dofaute mtertoOs 11 Pratt do destrutor eid exibeCin);// reat Go nto exibe@ ‘esta operator +(const texto 4): // Fac operator Classes ¢ objetos n wid exbe: 1) protbelgo do nbtodo extbeQ oid SersbGed;—//-Protéeipo do atts ath) private: har narca(t2), nodelo(7]s facie ine anofabs | // Varidvel-aebro static ranofab = 0; //xnictalizavartiveT-renbro static 70 Closses ¢ objetos 7] Constante sini eam eScop de classe Static ence int comp © 353 yg an ie ‘ine vain « exto veeolCsbrecarya de operadores"); Ant rain verte tertozO de 95 « ‘eo textals //cjetontoinicilizno: contro default entolcextbe(): // objeto extol chama 0 wétowo exibeQ eetedetbe(2};// Objete cexta? chana o a€todo wxibeO ertal = textol + fertaz: // Chana 2 fun oparator evtolexibeG);) //objero teeta} cham o née exibeQ) 1 ria betas chante o conseruter. 05 objetos 11 comparesan 9 valor da variavelmbro static amfab eure 0; y ei tenet Feed ; 4F (flag = e pid carro: exite) ——// Nodo enibeC) Goat

Vous aimerez peut-être aussi