Hem Personliga finanser 8 C ++ Funktioner inte-nybörjare - dummies

8 C ++ Funktioner inte-nybörjare - dummies

Innehållsförteckning:

Video: Kemi f nybörjare 7 ( fett) 2025

Video: Kemi f nybörjare 7 ( fett) 2025
Anonim

C ++-språket innehåller så många funktioner som de som börjar programmerare inte kan förstå alla. Lyckligtvis behöver du inte behärska alla funktioner i språket för att kunna skriva stora, verkliga program. Följande är tio funktioner som du kanske vill titta vidare på, bara om du ser dem i andras program.

C ++ goto-kommandot

Detta kommando går hela vägen tillbaka till C, föregångaren till C ++. I princip är det enkelt att använda det här kommandot. Du kan placera goto etikett; vart du än vill. När C ++ kommer över det här kommandot, skickas kontrollen direkt till etiketten, vilket visas i det här kodbiten:

för (;;) {om (villkorligt uttryck) {goto outahere;} // … vad du än vill …} outahere: // … programmet fortsätter här …

goto introducerar många sätt att skruva upp. Under alla omständigheter tog det inte lång tid innan programmerare noterade att de två vanligaste användningarna av goto var att avsluta loopar och att gå till nästa fall inom en loop. C-standarden kommittén införde rast och fortsatte och nästan helt avlägsnade behovet av goto-kommandot.

C ++ ternär operatör

Den ternära operatören är en operatör unik för C och C ++. Det fungerar som följer:

int n = (villkorligt)? expression1: expression2;

The? Operatören utvärderar först det villkorliga. Om villkoret är sant, är värdet av uttrycket lika med värdet av expression1; annars är det lika med värdet av expression2.

Till exempel kan du implementera en maximal () funktion enligt följande:

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

Den ternära operatören kan appliceras på alla typer av numeriska men kan inte överbelastas. Den ternära operatören är verkligen ett uttryck - inte ett kontrolluttag som en if.

Uppräknade typer i C ++

Den enkla idén är att du kan definiera konstanter och låta C ++ tilldela dem värden, som visas här:

enum Färger {BLACK, BLUE, GREEN, YELLOW, RED}; Färger myColor = BLACK;

Problemet med uppräknade typer ligger i implementeringen: I stället för att skapa en sann typ använder C ++ heltal. I detta fall tilldelas BLACK värdet 0, BLUE är tilldelat 1, GREEN2, och så vidare.

Standardbiblioteket för C ++ 2011 "fixar" det här problemet genom att skapa en uppräknad klasstyp som visas i följande kod:

enum klass Färger {BLACK, BLUE, GREEN, YELLOW, RED}; Färger myColor = Färger:: BLACK;

I den här versionen är färger en ny typ.Var och en av konstanterna, BLACK, BLUE, och så vidare, är medlemmar av typen Colors. Du kan fortfarande kasta ett objekt av klassfärger i ett int, men en implicit gjutning är inte tillåten.

C ++ namespaces

Det är möjligt att ge olika enheter i två olika bibliotek samma namn. Till exempel klassen () -funktionen i Studentbiblioteket tilldelar förmodligen en betyg, medan graden () -funktionen inom CivilEngineering-biblioteket kan ställa in lutningen på sidan av en kulle. För att undvika detta problem tillåter C ++ programmeraren att placera sin kod i en separat namnrymd. Kvaliteten inom Studentens namnutrymme skiljer sig således från betyget inom Civil Engineering.

Namnutrymmet är ovanför klassnamnet. Klassfunktionen () -medlemsfunktionen i klass BullDozer i namnnavnet CivilEngineering har det utökade namnet CivilEngineering:: BullDozer:: grade ().

Alla biblioteksobjekt och funktioner finns i namnrymden std. Uttalandet i början av programmallen med namespace std; säger att om du inte ser det angivna objektet i standardnamnrymden, gå och se i std.

Ren virtuella funktioner i C ++

Du behöver inte definiera en funktion som deklareras virtuellt. En sådan odefinierad funktion kallas en ren virtuell medlemsfunktion . Men då blir sakerna komplicerade. Till exempel sägs en klass med en eller flera rena virtuella funktioner vara abstrakta och kan inte användas för att skapa ett objekt. Hantera detta ämne när du känner dig bekväm med virtuella funktioner och sena bindningar.

C ++-strängklassen

De flesta språk innehåller en strängklass som en egen typ för att enkelt hantera strängar av tecken. I teorin bör strängklassen göra samma för C ++. I praktiken är det dock inte så enkelt. Eftersom sträng inte är en inneboende typ, är felmeddelandena som kompilatorn genererar när något går fel, mer som de som är associerade med användardefinierade klasser. För en nybörjare kan dessa meddelanden vara mycket svåra att tolka.

strängen är inte ens en klass. Det är en förekomst av en mallklass. Felmeddelandena kan vara hisnande.

Flera arv i C ++

En klass kan faktiskt utöka mer än en basklass. Det låter enkelt men kan bli ganska komplicerat när de två basklassen innehåller medlemsfunktioner med samma namn. Ännu värre är när båda basklassen själva är underklasser av någon vanlig klass.

I själva verket uppstår så många problem att C ++ är det enda C-liknande språket som stöder flera arv. Java och C #, båda talen från C ++, bestämde sig för att släppa stöd för flera arv.

C ++ mallar och Standardmallabiblioteket

Skaparna av C ++ noterade hur liknande funktioner som följande är:

int max (int n1, int n2) {if (n1> n2) {return n1;} returnera n2;} dubbel max (dubbel n1, dubbel n2) {om (n1> n2) {return n1;} returnera n2;} char max (char n1, char n2) {om (n1> n2) {return n1;} returnera n2;}

"Skulle det inte vara coolt," säger man till en annan, "om du skulle kunna ersätta typen med en pseudotyp T som du kan definiera vid kompileringstid?"Innan du vet det, blir presto-mallar en del av C ++:

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

Nu kan programmeraren skapa en max (int, int) genom att ersätta T med int och kompilera resultatet, skapa en max (dubbel, dubbel) genom att ersätta T med dubbel och så vidare. Standardsutskottet släppte till och med ett helt bibliotek av klasser, som kallas Standard Template Library (STL för kort), baserat på mallklasser.

För en nybörjare börjar emellertid mallklasserna bli synaktiskt mycket komplicerade. Dessutom, de fel som kompilatorn genererar när du får en mallinstansering fel är förvirrande för en expert, bry dig inte om en nybörjare. Det här är definitivt ett ämne som måste vänta tills du känner dig bekväm med det grundläggande språket.

8 C ++ Funktioner inte-nybörjare - dummies

Redaktörens val

Vad är en Java-karta? - dummies

Vad är en Java-karta? - dummies

Arrays och specialiserade listor gör det möjligt att utföra en fantastisk uppsättning uppgifter med Java. Det finns dock situationer där en Java-applikation behöver något som är mer relaterat till en databas, utan att egentligen ha allt databasbagage (som att behöva köpa en separat applikation). Till exempel kanske du vill kunna ...

Några få saker om Java Math - dummies

Några få saker om Java Math - dummies

Tro det eller inte, datorer - även de mest kraftfulla - Ha vissa begränsningar när det gäller att utföra matematiska beräkningar. Dessa begränsningar är vanligtvis obetydliga, men ibland slår de sig och biter på dig. Här är de saker du behöver se upp för när du gör matte i Java. Helhetsflöde Det grundläggande problemet ...

Vad är recursion i Java Programmering? - dummies

Vad är recursion i Java Programmering? - dummies

Rekursion är en grundläggande programmeringsteknik som du kan använda i Java, där en metod kallar sig för att lösa ett problem. En metod som använder denna teknik är rekursiv. Många programmeringsproblem kan lösas endast genom rekursion, och vissa problem som kan lösas med andra tekniker löses bättre genom rekursion. En av ...

Redaktörens val

4 Måste-inkludera i din blogg sidobardesign - dummies

4 Måste-inkludera i din blogg sidobardesign - dummies

Din bloggens sidofält är viktig fastighet som bör innehålla de element du vill ha mest. När du utformar din blogg sidofält kan du dra från en nästan oändlig lista över sidospårelement. Genom att välja noggrant vad som ska inkluderas (och vad som inte ska inkluderas) kan du ställa in din blogg från andra.

5 Användbara Wordpress Plugins - dummies

5 Användbara Wordpress Plugins - dummies

Om du bloggar på en självhävd plattform med WordPress-programvara, är det dags att anpassa din blogg med plug-ins - programvara som kan "anslutas" till din befintliga WordPress bloggprogramvara. Plug-ins gör det möjligt för dig att göra allt från funktionsbildspel i dina blogginlägg för att ansluta sociala medier till din webbplats. Här är fem användbara ...

7 Sätt att erövra Writer's Block som en Blogger - dummies

7 Sätt att erövra Writer's Block som en Blogger - dummies

Varje bloggare möter författarens block i ett tid eller annan. Om du är den typ av bloggare som sköter innehåll varje dag, kan författarens block vara stäverande. Kan du inte ta en paus för att få ditt skrivande mojo tillbaka? Prova en (eller flera) av dessa sju sätt att slå författarens block för att få dig tillbaka ...

Redaktörens val

10 Stora elektronikkomponentkällor - dummies

10 Stora elektronikkomponentkällor - dummies

Letar du efter några bra källor till dina elektroniska delar? Denna lista ger dig några fleråriga favoriter, både inom och utanför Nordamerika. Denna lista är inte uttömmande. Du hittar bokstavligen tusentals specialutbud för ny och begagnad elektronik. Plus, Amazon och eBay ger virtuella marknadsplatser för alla sorters säljare - ...

Elektronik Basics: Resistance - dummies

Elektronik Basics: Resistance - dummies

I elektronikvärlden är motståndet inte meningslöst. Faktum är att motstånd kan vara mycket användbart. Utan motstånd skulle elektronik inte vara möjligt. Elektronik handlar om att manipulera strömmen av ström, och ett av de mest grundläggande sätten att manipulera strömmen är att minska det genom resistans. Utan motstånd strömmar strömmen oreglerad och där ...

Digital elektronik: Så här installerar du BASIC Stamp Editor och Anslut till Stämpeldummorna

Digital elektronik: Så här installerar du BASIC Stamp Editor och Anslut till Stämpeldummorna

För att berätta för BASIC Stamp vad du vill göra i ditt digitala elektronikprojekt måste du programmera det. BASIC Stamp Windows Editor är den programvara som du använder på din dator för att skapa program som kan laddas ner till en BASIC Stamp-mikrokontroller. Denna programvara är tillgänglig gratis från Parallax webbplats. ...