Hjem Personlig finansiering Begyndelse Programmering med C ++ for Dummies Cheat Sheet - dummies

Begyndelse Programmering med C ++ for Dummies Cheat Sheet - dummies

Video: C++ Programming 2025

Video: C++ Programming 2025
Anonim

Af Stephen R. Davis

C ++ er ikke et let programmeringssprog til at mestre. Kun gennem erfaring vil de myriade kombinationer af symboler begynde at virke naturlige for dig. Dette Cheat Sheet giver dig dog nogle solide tips om at lette overgangen fra C ++ nybegynder til C ++ guru: Kend hvordan man læser komplekse C + + udtryk; lære at undgå pegerproblemer; og find ud af, hvordan og hvornår man skal lave dybe kopier.

Sådan læses et komplekst C ++ Expression

C ++ er fyldt med små symboler, der hver især tilføjer betydningen af ​​udtryk. Reglerne for C ++ grammatik er så fleksible, at disse symboler kan kombineres i næsten uhåndterligt komplekse kombinationer. Udtryk i det enklere C-sprog kan blive så uanstændigt, at der tidligere var en årlig konkurrence for hvem der kunne skrive det mest uklare program, og hvem kunne forstå det.

Det er aldrig en god ide at forsøge at skrive kompleks kode, men du vil undertiden køre på tværs af udtryk i C ++, der er lidt forvirrende ved første øjekast. Brug blot følgende trin til at finde ud af dem:

  1. Start med de mest indlejrede parenteser.

    Start med at kigge efter de yderste parenteser. Inden for dem, se efter indlejrede parenteser. Gentag processen, indtil du har arbejdet dig til det dybeste par parentes. Begynd at evaluere den pågældende subekspression først ved hjælp af følgende regler. Når du forstår det udtryk, skal du springe tilbage til næste niveau og gentage processen.

  2. I hver paranteser evalueres hver operation i forrang.

    Den rækkefølge, som operatørerne vurderes, bestemmes af operatørens forrang i tabellen. Indirection kommer før multiplikation, som kommer før tilsætning dermed følgende tilføjer 1 plus 2 gange værdien spids til ved * ptr.

int i = 1 + 2 * * ptr;
Operatører i prædikorden

Forudgang Operator Betydning
1 () (unary) Indkal en funktion
2 * og -> (unary) Dereference a pointer
2 - (unary) Returnerer det negative af dets argument
3 ++ (unary) Forøgelse
3 > - (unary) Decrement 4
* (binær) Multiplikation 4
/ (binær) Division 4
% (binær) Modulo 5
+ (binær) Tilføjelse 5
- (binær) Subtraktion 6
&& (binær) Logisk OG 6
! ! Logisk ELLER 7
=, * =,% =, + =, - = (speciel) Opgavetyper Evaluer operationer med samme prioritet fra venstre mod højre (undtagen opgave, som går den anden vej).
  1. De fleste operatører med samme forrang vurderer fra venstre til højre. Således tilføjer følgende 1 til 2 og tilføjer resultatet til 3:

    int i = 1 + 2 + 3;

    Evalueringsordningen for nogle operatører betyder ikke noget. For eksempel fungerer tilføjelsen det samme fra venstre mod højre som det gør fra højre til venstre. Evalueringsordningen gør meget forskel for nogle operationer som division. Følgende opdeler 8 ved 4 og deler resultatet med 2:
    

    int i = 8/4/2;

    Den største undtagelse til denne regel er opgaven, som evalueres fra højre til venstre:
    

    a = b = c;

    Dette tildeler c til b og resultatet til a.
    

    Evaluér underudtryk i ingen bestemt rækkefølge.

  2. Overvej følgende udtryk:

    int i = f () + g () * h ();

    Multiplikation har højere prioritet, så man kan antage at funktionerne g () og h () kaldes før f (), men det er ikke tilfældet. Funktionsopkald har den højeste prioritet for alle, så alle tre funktioner kaldes før enten multiplikationen eller tilføjelsen udføres. (Resultaterne returneres fra g () og h () multipliceres og tilføjes derefter til de resultater, der returneres fra f ().)
    

    Den eneste gang, at den ordre, der fungerer, kaldes, gør en forskel, er, når funktionen har bivirkninger f.eks. åbning af en fil eller ændring af værdien af ​​en global variabel. Du bør absolut ikke skrive dine programmer, så de afhænger af denne type bivirkninger.

    Udfør kun typer konverteringer, når det er nødvendigt.

  3. Du bør ikke foretage flere typer konverteringer end absolut nødvendigt. For eksempel har følgende udtryk mindst tre og muligvis fire typer konverteringer:

    float f = 'a' + 1;

    Karet 'a' skal fremmes til et int for at udføre tilføjelsen. Int'et konverteres derefter til en dobbelt og derefter ned konverteres til en enkelt præcisions float. Husk at al aritmetik udføres enten i int eller dobbelt. Du bør generelt undgå at udføre aritmetik på tegntyper og undgå ensartet præcision flyde helt.
    

    5 måder at undgå pegerproblemer i C ++

I C ++ er en

peger en variabel, som indeholder adressen på et objekt i computerens interne hukommelse. Brug disse trin for at undgå problemer med peger i C ++: Initialiser pegerne, når de er angivet.

  1. Lad aldrig markørvariablerne ikke initialiseres - ting ville ikke være for dårlige, hvis uninitialiserede peger altid indeholdt tilfældige værdier - langt de fleste tilfældige værdier er ulovlige pointerværdier og vil få programmet til at gå ned, så snart de bliver brugt. Problemet er, at uninitialiserede variabler har tendens til at påregne værdien af ​​andre tidligere anvendte pegervariabler. Disse problemer er meget vanskelige at debug.

    Hvis du ikke ved, hvad der ellers skal initialiseres en peger, skal du initialisere den til nullptr. nullptr er garanteret at være en ulovlig adresse.

    Nul ud pointers, når du bruger dem.

  2. På samme måde er altid nul en pointervariabel, når markøren ikke længere er gyldig, ved at tildele værdien nullptr. Dette er især tilfældet, når du returnerer en blok af hukommelse til bunken ved at slette; nul pegeren altid efter returnering af hukommelse.

    Alloker hukommelsen fra bunken og returner den til bunken på samme "niveau" for at undgå hukommelseslekkage.

  3. Prøv altid at returnere en hukommelsesblok til bunken på samme niveau af abstraktion som du har tildelt det. Dette betyder generelt at forsøge at slette hukommelsen på samme niveau af funktionsopkald.

    Fang en undtagelse for at slette hukommelsen, når det er nødvendigt.

  4. Glem ikke, at en undtagelse kan forekomme på næsten enhver tid. Hvis du har til hensigt at fange undtagelsen og fortsætte med at operere (i modsætning til at lade programmet falde), skal du sørge for, at du fanger undtagelsen og returnerer hukommelsesblokke til bunken, før de peger, der peger på dem, går uden for omfanget, og hukommelsen er faret vild.

    Sørg for, at typerne passer nøjagtigt sammen.

  5. Sørg altid for, at typer af pointer matcher den ønskede type. Du må ikke omdanne en pointer uden nogen specifik grund. Overvej følgende:

    void fn (int * p); void myFunc () {char c = 'a'; char * pC = & c; fn ((int *) pC);}

Ovennævnte funktion kompilerer uden klage, da tegnpegeren pC er blevet omarbejdet til en int * for at matche erklæringen af ​​fn (int *); Men dette program vil næsten helt sikkert ikke fungere. Funktionen fn () forventer en pointer til et fuldt 32-bit heltal og ikke noget rinky-dink 8 bit char. Disse typer af problemer er meget vanskelige at sortere ud.

Hvordan og hvornår man laver dybe kopier i C ++

Klasser, der tildeler ressourcer i deres konstruktør, skal normalt indeholde en kopiekonstruktør for at lave kopier af disse ressourcer. Allokering af en ny blok af hukommelse og kopiering af indholdet af originalen til denne nye blok er kendt som oprettelse af en

dyb kopi (i modsætning til standard overfladisk kopi). Brug følgende trin til at bestemme, hvordan og hvornår du skal lave dybe kopier i C ++: Lav altid en dyb kopi, hvis konstruktøren allokerer ressourcer.

  1. Som standard gør C ++ såkaldte "lavt" medlem-til-medlem kopier af objekter, når de overføres til funktioner eller som resultat af en opgave. Du skal erstatte standard overfladiske kopi operatører med deres dyb kopi ækvivalent for enhver klasse, der allokerer ressourcer i konstruktøren. Den mest almindelige ressource, der bliver tildelt, er hukommelse, der returneres af den nye operatør.

    Indsæt altid en destructor for en klasse, der allokerer ressourcer.

  2. Hvis du opretter en konstruktør, der allokerer ressourcer, skal du oprette en destructor, der genopretter dem. Ingen undtagelser.

    Angiv altid destructor virtuel.

  3. En fælles nybegynderfejl er at glemme at erklære din destructor virtuel. Programmet løber fint, indtil nogle intetanende programmør kommer sammen og arver fra din klasse. Programmet ser stadig ud til at fungere, men fordi destruktoren i baseklassen måske ikke påberåbes ordentligt, lækker hukommelsen fra dit program som en sigte, indtil den til sidst går i stykker. Dette problem er svært at finde.

    Indsæt altid en kopiekonstruktør for en klasse, der allokerer ressourcer.

  4. Kopikonstruktøren opretter en ordentlig kopi af det aktuelle objekt ved at allokere hukommelsen ud af bunken og kopiere indholdet af kildeobjektet.

    Overstyr altid tildelingsoperatøren for en klasse, der allokerer ressourcer.

  5. Programmører skal modløses af overordnede operatører, men overdragelsesoperatøren er en undtagelse. Du bør tilsidesætte opgaveoperatøren for enhver klasse, der allokerer ressourcer i konstruktøren.

    Opgaveoperatøren skal gøre tre ting:

    Kontroller, at venstre og højre håndobjekt ikke er det samme objekt. Med andre ord, vær sikker på, at applikationsprogrammeren ikke skrev noget som (a = a). Hvis de er, gør ingenting.

    1. Indkod den samme kode som destructoren på venstreobjektet for at returnere sine ressourcer.

    2. Indkod den samme kode som en kopikonstruktør for at lave en dyb kopi af den højre hånd i venstre håndobjekt.

    3. Hvis du ikke kan gøre det, skal du slette kopiekonstruktøren og tildelingsoperatøren, så programmet ikke kan lave kopier af din genstand.

  6. Hvis du ikke engang kan gøre det, fordi din compiler ikke understøtter C ++ 2011 Delete Constructor-funktionen, skal du oprette en tom kopikonstruktør og opgaveoperatør og erklære dem beskyttet for at holde andre klasser i brug.

Begyndelse Programmering med C ++ for Dummies Cheat Sheet - dummies

Valg af editor

10 Transaktioner og funktioner, som de fleste oplysninger konverterer til i QuickBooks Online - dummies

10 Transaktioner og funktioner, som de fleste oplysninger konverterer til i QuickBooks Online - dummies

Følgende listen indeholder detaljer om transaktioner og funktioner, som de fleste data konverterer og sammenlignelige transaktioner og funktioner findes i QuickBooks Online (QBO). I nogle tilfælde findes undtagelser; Du finder specifikke noter i web-ekstraartikel & ldquo; Hvordan QuickBooks Desktop Lister Konverter til QuickBooks Online. & Rdquo; Og for flere oplysninger, besøg QuickBooks ofte stillede spørgsmål, og ldquo; Hvorfor ...

Der producerer betalingsopgørelser i MYOB-dummies

Der producerer betalingsopgørelser i MYOB-dummies

I slutningen af ​​hvert lønningsår (som slutter den 30. juni) kan bruge MYOB til at levere hver medarbejder med et betalingsoversigt. Et betalingsopsamling er et kort dokument, der opsummerer de bruttolønninger, skat og godtgørelser, som medarbejderen har modtaget i løbet af de sidste 12 måneder af ansættelsen. Opsætning af betalingsoversigter Til ...

15 Funktioner, der ikke konverteres og findes ikke i QuickBooks Online

15 Funktioner, der ikke konverteres og findes ikke i QuickBooks Online

Følgende oplysninger viser transaktioner og funktioner, som ikke konverteres fra desktop QuickBooks til QuickBooks Online (QBO) og heller ikke har nogen sammenlignelig funktion i QBO. Selv om en eller flere af disse transaktioner eller funktioner kan være afbrudte afbrydere, skal du huske at for mange af disse funktioner kan du bruge løsninger. Typen af ​​data eller funktional noter ...

Valg af editor

Sådan bruger du FREQUENCY-funktionen i Excel - dummier

Sådan bruger du FREQUENCY-funktionen i Excel - dummier

FREQUENCY-funktionen i Excel tæller værdierne i en array der falder inden for en rækkevidde eller bin. Funktionen bruger følgende syntaks: = FREQUENCY (data_array, bins_array) hvor data_array er det regnearkområde, der indeholder de værdier, du vil tælle, og bins_array er et regnearkområde, der identificerer værdierne eller bakkerne, der ...

Hvordan man bruger målsøgningsfunktionen i Excel 2013 - dummies

Hvordan man bruger målsøgningsfunktionen i Excel 2013 - dummies

, Når du skal analysere , bruger du Excel 2013s målsøgningsfunktion til at finde de indgangsværdier, der er nødvendige for at opnå det ønskede mål. Nogle gange, når du gør hvad-hvis analyse, har du et bestemt udgangspunkt i tankerne, såsom et mål salgsmængde eller vækstprocent. Hvis du vil bruge funktionen Målsøgning placeret på What-If ...

Hvordan man vælger Excel CHOOSE-funktionen i datamodeller - dummier

Hvordan man vælger Excel CHOOSE-funktionen i datamodeller - dummier

Selvom valgmuligheden måske ikke Se nyttige på overfladen, denne funktion kan dramatisk forbedre dine Excel-datamodeller. VÆLG-funktionen returnerer en værdi fra en bestemt liste over værdier baseret på et angivet positionsnummer. Hvis du f.eks. Indtaster formlerne VÆLG (3, "Rød", "Gul", "Grøn", "Blå") i en celle, returnerer Excel ...

Valg af editor

Indlæs en Workflow i SharePoint 2010 - dummies

Indlæs en Workflow i SharePoint 2010 - dummies

Konfigurere dit bibliotek til at bruge en workflow i SharePoint 2010 løser kun en del af problemet. Hvis du ikke har dit bibliotek konfigureret til at kick-off automatisk, skal en person manuelt starte workflowen. Start manuelt en arbejdsgang ved at følge disse trin: Gennemse det element, du vil godkende, klik på rullelisten og vælg Workflows. ...

Bibliotek / Liste Generelle indstillinger Område i SharePoint 2010 - dummies

Bibliotek / Liste Generelle indstillinger Område i SharePoint 2010 - dummies

Bibliotekets generelle indstillinger / listen er blevet udvidet i SharePoint 2010 til at omfatte flere nye indstillinger, herunder validering, kolonne standardværdi (for biblioteker), vurdering, metadata navigation, visningsvisning og formular (for lister). Her er et overblik for at se, hvad du kan gøre med hver af disse muligheder. Generelle indstillinger Konfigurationsindstillinger Indstillingsnavn ...

Importer et regneark som en liste i SharePoint 2010 - dummies

Importer et regneark som en liste i SharePoint 2010 - dummies

Har allerede data i et regneark, som du Vil du være en SharePoint 2010 liste? Du er halvvejs derhen! Før du starter, skal du sørge for at gøre følgende: Rens listen. Sørg for, at din liste ligner et bord uden tomme kolonner eller rækker. Sørg for, at din liste har overskrifter. Alle kolonner skal have en ...