Hjem Personlig finansiering 8 C ++ Ikke-nybegynnerfunksjoner - dummies

8 C ++ Ikke-nybegynnerfunksjoner - dummies

Innholdsfortegnelse:

Video: Kurs C++ odc. 8: Łańcuchy. Typ string. Tablice char. Tabela ASCII 2025

Video: Kurs C++ odc. 8: Łańcuchy. Typ string. Tablice char. Tabela ASCII 2025
Anonim

C ++-språket inneholder så mange funksjoner som begynnelsen programmerere ikke muligens kan forstå hver enkelt. Heldigvis trenger du ikke å mestre alle funksjonene i språket for å kunne skrive store, virkelige programmer. Følgende er ti funksjoner som du kanskje vil se fremover på, bare hvis du ser dem i andres programmer.

C ++ goto-kommandoen

Denne kommandoen går helt tilbake til C, stammen til C ++. I prinsippet er det enkelt å bruke denne kommandoen. Du kan plassere goto label; hvor enn du vil. Når C ++ kommer over denne kommandoen, sendes kontrollen umiddelbart til etiketten, som vist i denne kodestykket:

for (;;) {hvis (betinget uttrykk) {goto outahere;} // … uansett hva du vil …} outahere: // … programmet fortsetter her …

I praksis, goto introduserer mange måter å skru opp. I hvert fall tok det ikke lang tid før programmører la merke til at de to vanligste bruken av goto var å gå ut av looper og å gå til neste sak i en loop. C-standarden kom inn for å bryte og fortsette og fjernet nesten behovet for goto-kommandoen.

C ++ ternær operatør

Den ternære operatøren er en operatør som er unik for C og C ++. Det fungerer som følger:

int n = (betinget)? uttrykk1: uttrykk2;

The? Operatøren vurderer først betinget. Hvis tilstanden er sant, er verdien av uttrykket lik verdien av uttrykket1; ellers er det lik verdien av uttrykket2.

For eksempel kan du implementere en maksimum () -funksjon som følger:

int max (int n1, int n2) {retur (n1> n2)? n1: n2;}

Den ternære operatøren kan brukes på alle typer numeriske men kan ikke overbelastes. Den ternære operatøren er virkelig et uttrykk - ikke en kontrollerklæring som en hvis.

Opptatte typer i C ++

Den enkle ideen er at du kan definere konstanter og la C ++ tildele dem verdier, som vist her:

enum Farger {SVART, BLÅ, GRØN, GUL, RØD}; Farger myColor = SVART;

Problemet med oppnådde typer ligger i implementeringen: I stedet for å opprette en sann type bruker C ++ heltall. I dette tilfellet er BLACK tildelt verdien 0, BLUE er tildelt 1, GREEN2, og så videre.

Standardbiblioteket for C ++ for 2011 "fikser" dette problemet ved å opprette en opptatt klassetype som vist i følgende kode:

enum klasse Farger {SVART, BLÅ, GRØN, GUL, RØD}; Farger myColor = Farger:: SVART;

I denne versjonen er farger en ny type.Hver av konstantene, BLACK, BLUE, og så videre, er medlemmer av typen Colors. Du kan fortsatt kaste et objekt av klassefarger inn i en int, men en implisitt gjengivelse er ikke tillatt.

C ++ navneområder

Det er mulig å gi forskjellige enheter i to forskjellige biblioteker samme navn. For eksempel gir karakteren () -funksjonen i Studentbiblioteket sannsynligvis karakter, mens karakteren () i Civil Engineering-biblioteket kan sette bakken på siden av en bakke. For å unngå dette problemet, lar C ++ programmøren legge sin kode i et eget navneområde. Dermed er karakteren i Studentens navneområde forskjellig fra karakteren innen Civil Engineering.

Navneområdet er utover klassenavnet. Klassen () medlemsfunksjonen til klassen BullDozer i Civil Engineer namespace har det utvidede navnet Civil Engineer:: BullDozer:: grade ().

Alle bibliotekets objekter og funksjoner er i navneområdet std. Oppgaven i begynnelsen av programmalen bruker navneområde std; sier at hvis du ikke ser det angitte objektet i standard navnerom, så gå og se i std.

Pure virtuelle funksjoner i C ++

Du trenger ikke å definere en funksjon som er deklarert virtuell. En slik udefinert funksjon er kjent som en ren virtuell medlemsfunksjon . På det tidspunktet blir det imidlertid komplisert. For eksempel sies en klasse med en eller flere rene virtuelle funksjoner abstrakt og kan ikke brukes til å skape et objekt. Takle dette emnet etter at du har det godt med virtuelle funksjoner og sen binding.

C ++-strengeklassen

De fleste språk inkluderer en strengklasse som en egen type for lett å håndtere tekststrenger. I teorien bør strengklassen gjøre det samme for C ++. I praksis er det imidlertid ikke så enkelt. Fordi streng ikke er en egen type, er feilmeldingene som kompilatoren genererer når noe går galt, mer som de som er knyttet til brukerdefinerte klasser. For en nybegynner kan disse meldingene være svært vanskelig å tolke.

streng er ikke engang en klasse. Det er en forekomst av en maleklasse. Feilmeldingene kan være fantastisk.

Flere arv i C ++

En klasse kan faktisk utvide mer enn en grunnklasse. Dette høres enkelt, men kan bli ganske komplisert når de to grunnklassene inneholder medlemsfunksjoner med samme navn. Enda verre er når begge grunnklassene selv er underklasser av noen vanlig klasse.

Faktisk oppstår så mange problemer at C ++ er det eneste C-lignende språket som støtter flere arv. Java og C #, begge språkene avledet fra C ++, bestemte seg for å slippe støtte for flere arv.

C + + -maler og Standardmallabiblioteket

Skaperne av C ++ la merke til hvordan lignende funksjoner som følgende er:

int max (int n1, int n2) {if (n1> n2) {return n1;} return n2;} double max (double n1, double n2) {if (n1> n2) {return n1;} retur n2;} char max (char n1, char n2) {hvis (n1> n2) {return n1;} returnere n2;}

"Ville det ikke være kult," sier en til en annen, "hvis du kunne erstatte typen med en pseudotype T som du kunne definere på kompileringstidspunktet?"Før du vet det, blir presto-maler en del av C ++:

mal T max (T t1, T t2) {if (t1> t2) {return t1;} return t2;}

Nå kan programmereren lage en maks (int, int) ved å erstatte T med int og kompilere resultatet, opprett en maks (dobbelt, dobbel) ved å erstatte T med dobbel og så videre. Standardskomiteen ga til og med ut et helt bibliotek av klasser, kjent som Standard Template Library (STL for kort), basert på malklasser.

For en nybegynner begynner emnet for malklasser å bli syntactically svært komplisert. I tillegg er feilene som kompilatoren genererer når du får en mal-instansering feil, forvirrende for en ekspert, ikke bry deg om en nybegynner. Dette er definitivt et emne som må vente til du føler deg komfortabel med grunnleggende språket.

8 C ++ Ikke-nybegynnerfunksjoner - dummies

Redaktørens valg

Hvordan lage Baseball Practice Fun - Dummies

Hvordan lage Baseball Practice Fun - Dummies

Som baseball trener må du ikke bare lære laget ditt grunnleggende i spillet, må du lære disse grunnleggende morsomme, slik at spillerne blir interessert og engasjert. Bruk tipsene i følgende liste for å gjøre baseballøvelsen morsom: Sørg for mange repetisjoner for hvert barn. Stopp treningen kort ...

Basisspillers ansvar i Baseball - dummies

Basisspillers ansvar i Baseball - dummies

Baseball trener er ikke bare ansvarlige for lagspillet som en hel, men for coaching spillere når de når første og tredje base i løpet av et baseballspill. Ansvaret for å coaching hver base er forskjellig. Hva en første basissjåfør gjør: Oppfordrer smeten til å kaste ned første baseline på infield hits. ...

Hvordan fantasy baseball ligaene blir scoret - dummies

Hvordan fantasy baseball ligaene blir scoret - dummies

Fantasy baseball har tre hovedspillformater som bestemmer hvordan ligaen din score punkter. Spillformatene for fantasybaseball er Rotisserie, Head-to-Head One Win og Point System. Hvert format blir scoret avhengig av ligaoppsettet. For eksempel vil 5 × 5 liga score poeng eller gevinster / tap på fem forhåndsvalgte treffstatistikk, samt fem ...

Redaktørens valg

Praktiserer dag til dag, uformell oppmerksomhet - dummies

Praktiserer dag til dag, uformell oppmerksomhet - dummies

Kan trene det når som helst. Uformell oppmerksomhet meditasjon er når du trener oppmerksomhet uten å skille ut en spesiell tid for det. Her er ti eksempler på uformell oppmerksomhet: Mindful kommunikasjon - Når du snakker eller hører på noen andre, blir du klar over lyden av ...

Forbli lekfull og lyshjerte når du praktiserer Mindfulness - dummies

Forbli lekfull og lyshjerte når du praktiserer Mindfulness - dummies

En nydelig holdning til å ha oppmerksomhet og Livet generelt er lekenhet og lethed. Hvis en meditasjon ikke virker for deg første gang eller ikke føles riktig for deg, ikke vær panikk, men tenk på opplevelsen som et eksperiment som du kan prøve igjen senere. Tilnærming oppmerksomhet som du ville et nytt spill eller ...

Redaktørens valg

Valg av resolusjonsstørrelse på et Canon EOS Rebel T3-serie kamera - dummies

Valg av resolusjonsstørrelse på et Canon EOS Rebel T3-serie kamera - dummies

For å bestemme seg for en Kvalitetsinnstilling (eller bildeoppløsningstørrelse) for Canon Rebel T3 eller T3i, den første avgjørelsen du må gjøre er hvor mange piksler du vil at bildet skal inneholde. Piksler er de små firkantede fliser hvorfra alle digitale bilder er laget; piksel er kort for bildeelement. Hvis din ...

Hvordan du lager videobilder på Rebel T7i / 800D - dummies

Hvordan du lager videobilder på Rebel T7i / 800D - dummies

Videoopplastingsfunksjonen på Canon EOS Rebel T7i / 800D fanger korte videoklipp som er sydd i et enkelt opptak, kalt et videoalbum. Du kan stille klippelengden til 8, 4 eller 2 sekunder lang (men alle klippene i et album må ha samme lengde). Med tanke på individets korthet ...