Huis Persoonlijke financiën 8 C ++ Not-So-Beginner Features - dummies

8 C ++ Not-So-Beginner Features - dummies

Inhoudsopgave:

Video: Features Of C++ | Machine Independent But Not Platform Independent 2024

Video: Features Of C++ | Machine Independent But Not Platform Independent 2024
Anonim

De C ++ taal bevat zoveel functies dat beginnende programmeurs onmogelijk iedereen kunnen begrijpen. Gelukkig hoef je niet alle functies van de taal onder de knie te krijgen om grote, realistische programma's te schrijven. Hieronder volgen tien functies waar je misschien naar vooruit wilt kijken, voor het geval je ze in programma's van andere mensen ziet.

Het commando C ++ goto

Dit commando gaat helemaal terug naar C, de voorloper van C ++. In principe is het gebruik van dit commando eenvoudig. Je kunt een goto-label plaatsen; Waar je maar wilt. Wanneer C ++ dit commando tegenkomt, gaat de besturing onmiddellijk over naar het label, zoals aangetoond in dit codefragment:

voor (;;) {if (voorwaardelijke uitdrukking) {ga naar buiten;} // … wat je maar wilt …} outehere: // … programma gaat hier verder …

In de praktijk echter goto introduceert veel manieren om het te verknallen. Hoe dan ook, het duurde niet lang voordat programmeurs opmerkten dat de twee meest voorkomende toepassingen van de goto waren om lussen te verlaten en naar het volgende geval binnen een lus te gaan. Het C Standards Committee introduceerde pauze en ging door en bijna volledig de noodzaak van het goto commando weggenomen.

De C ++ ternaire operator

De ternaire operator is een operator die uniek is voor C en C ++. Het werkt als volgt:

int n = (voorwaardelijk)? expression1: expression2;

The? operator evalueert eerst het voorwaardelijke. Als de voorwaarde waar is, is de waarde van de uitdrukking gelijk aan de waarde van expression1; anders is het gelijk aan de waarde van expression2.

U zou bijvoorbeeld een maximum () -functie als volgt kunnen implementeren:

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

De ternaire operator kan op elk type numeriek worden toegepast, maar kan niet worden overbelast. De ternaire operator is echt een uitdrukking - geen controleverklaring zoals een als.

Opsommingstypen in C ++

Het eenvoudige idee is dat u constanten kunt definiëren en C ++ hieraan waarden kunt toewijzen, zoals hier wordt weergegeven:

enum Kleuren {ZWART, BLAUW, GROEN, GEEL, ROOD}; Kleuren myColor = ZWART;

Het probleem met opgesomde typen ligt in de implementatie: in plaats van een echt type te maken, gebruikt C ++ gehele getallen. In dit geval krijgt BLACK de waarde 0, BLUE is 1, GREEN2, enzovoort toegewezen.

In de standaardbibliotheek van 2011 voor C ++ is dit probleem "verholpen" door een opgesomd klassetype te maken, zoals weergegeven in het volgende fragment:

klassen met enumklasse {BLACK, BLUE, GREEN, YELLOW, RED}; Kleuren myColor = Kleuren:: ZWART;

In deze versie is Colors een nieuw type.Elk van de constanten, BLACK, BLUE, enzovoort, zijn leden van het type Colors. Je kunt nog steeds een object van klasse Colors in een int casten, maar een impliciete cast is niet toegestaan.

C ++ naamruimten

Het is mogelijk om verschillende entiteiten in twee verschillende bibliotheken dezelfde naam te geven. De grade () -functie binnen de bibliotheek Student kent bijvoorbeeld waarschijnlijk een cijfer toe, terwijl de functie grade () binnen de CivilEngineering-bibliotheek de helling aan de zijkant van een heuvel kan instellen. Om dit probleem te voorkomen, staat C ++ toe dat de programmeur haar code in een aparte naamruimte plaatst. De rang binnen de namespace van de student is dus anders dan de rang binnen CivilEngineering.

De naamruimte is hoger dan de klassenaam. De grade () lidfunctie van de klasse BullDozer in de naamruimte CivilEngineering heeft de uitgebreide naam CivilEngineering:: BullDozer:: grade ().

Alle bibliotheekobjecten en -functies bevinden zich in de namespace-standaard. De instructie aan het begin van de programmasjabloon met behulp van naamruimte std; zegt dat als je het opgegeven object niet ziet in de standaard naamruimte, ga dan in std kijken.

Pure virtuele functies in C ++

U hoeft geen functie te definiëren die virtueel wordt verklaard. Een dergelijke ongedefinieerde functie staat bekend als een pure virtuele led-functie . Op dat moment wordt het echter ingewikkeld. Een klasse met een of meer pure virtuele functies is bijvoorbeeld abstract en kan niet worden gebruikt om een ​​object te maken. Taak dit onderwerp aan nadat u zich op uw gemak voelt met virtuele functies en late binding.

De tekenreeks C ++

De meeste talen bevatten een tekenreeks als intrinsiek voor het eenvoudig verwerken van tekenreeksen. In theorie zou de stringklasse hetzelfde moeten doen voor C ++. In de praktijk is het echter niet zo eenvoudig. Omdat tekenreeks geen intrinsiek type is, lijken de foutmeldingen die de compiler genereert als er iets misgaat meer op die van gebruikersgedefinieerde klassen. Voor een beginner kunnen deze berichten erg moeilijk te interpreteren zijn.

tekenreeks is zelfs geen klasse. Het is een instantie van een sjabloonklasse. De foutmeldingen kunnen adembenemend zijn.

Meerdere overerving in C ++

Eén klasse kan in feite meer dan één basisklasse uitbreiden. Dit klinkt eenvoudig, maar kan behoorlijk ingewikkeld worden als de twee basisklassen lidfuncties met dezelfde naam bevatten. Erger is wanneer beide basisklassen zelf subklassen zijn van een of andere gemeenschappelijke klasse.

In feite doen zich zoveel problemen voor dat C ++ de enige C-achtige taal is die meerdere overerving ondersteunt. Java en C #, beide talen afgeleid van C ++, besloten om de ondersteuning voor meerdere overerving te beëindigen.

C ++ -sjablonen en de standaard sjabloonbibliotheek

De makers van C ++ merkten op dat vergelijkbare functies zoals de volgende zijn:

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

"Zou het niet cool zijn," zegt de een tegen de ander, "als je het type zou kunnen vervangen door een pseudo-type T die je tijdens het compileren zou kunnen definiëren?"Voor je het weet, presto - sjablonen worden onderdeel van C ++:

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

Nu kan de programmeur maak een max (int, int) door T te vervangen door int en het resultaat te compileren, maak een max (dubbel, dubbel) door T te vervangen door double, enzovoort. Het Standards Committee heeft zelfs een hele bibliotheek met klassen uitgebracht, bekend als de standaard sjabloonbibliotheek (kortweg STL), op basis van sjabloonklassen.

Voor een beginner begint het onderwerp van de sjabloonklassen echter syntactisch erg ingewikkeld te worden. Bovendien zijn de fouten die de compiler genereert wanneer u een sjabloontoewijzing verkeerd krijgt, verwarrend voor een expert, laat staan ​​een beginner. Dit is absoluut een onderwerp dat moet wachten tot je je op je gemak voelt met de basistaal.

8 C ++ Not-So-Beginner Features - dummies

Bewerkers keuze

Een Oracle-omgeving instellen - dummies

Een Oracle-omgeving instellen - dummies

Als u een typische PL / SQL-omgeving wilt instellen, hebt u de volgende componenten: Databaseserver: dit is een computer (of een reeks computers) die de Oracle-database uitvoert. Oracle werkt in veel populaire computeromgevingen. De meest gebruikte met Oracle zijn UNIX, Linux of een versie van Microsoft Windows. PL / SQL wordt meestal uitgevoerd ...

SQL-rijwaarden en -waarden - dummies

SQL-rijwaarden en -waarden - dummies

De waarden die worden bewaard in de cellen die de snijpunten van de SQL-database vormen De rijen en kolommen van de tabel zijn de grondstoffen waaruit u zinvolle relaties en trends kunt afleiden. Rijwaarden De meest zichtbare waarden in een database zijn tabelrijwaarden. Dit zijn de waarden die elke rij van een databasetabel ...

SQL eerste, tweede en derde normale vormen - dummies

SQL eerste, tweede en derde normale vormen - dummies

Er zijn drie bronnen van wijzigingsanomalieën in SQL Deze worden gedefinieerd als eerste, tweede en derde normale vormen (1NF, 2NF, 3NF). Deze normale vormen fungeren als remedies voor het wijzigen van anomalieën. Eerste normale vorm Om in de eerste normale vorm (1NF) te zijn, moet een tabel de volgende eigenschappen hebben: De tabel is tweedimensionaal met rijen en ...

Bewerkers keuze

Een kijkje nemen in het syndroom van Empty-Nest - dummies

Een kijkje nemen in het syndroom van Empty-Nest - dummies

Een veel voorkomende misvatting is dat wanneer de kinderen van een stel vertrekken thuis, zullen pappa en mama het syndroom van empty-nest ontwikkelen. Ja, ze hebben misschien een leeg nest, maar voor sommige paren bloeit hun liefdesleven in deze periode van hun leven. De slachtoffers van het syndroom zijn de paren waarvan de relatie uit elkaar valt als zij de enige ...

STD's: wat u moet weten over herpes - dummies

STD's: wat u moet weten over herpes - dummies

Herpes, veroorzaakt door het herpes simplex-virus (HSV) ), is een ongeneeslijke SOA. Herpes heeft eigenlijk twee vormen: herpes simplex-type 1 (HSV-1) en herpes simplex-type 2 (HSV-2). HSV-1 wordt meestal geassocieerd met koortsblaasjes en koortsblaren boven de taille. "Ongeveer 80 procent van de Amerikaanse volwassenen heeft orale herpes. Ongeveer 25 procent van ...

Tiener Geslacht: hoe te weten Hoe ver te gaan - dummies

Tiener Geslacht: hoe te weten Hoe ver te gaan - dummies

Een van de grootste vragen voor tieners is niet "Zou ik seks moeten hebben? "Maar" Hoe ver moet ik gaan? "Terwijl het eigen comfortniveau en dat van de partner de topprioriteit zou moeten zijn in deze beslissing, spelen andere factoren een rol, vooral als tieners dat amorfe concept van" het derde honk overwegen. "" Derde basis "...

Bewerkers keuze

Tien voorwaarden American Football Announcers Gebruik - dummies

Tien voorwaarden American Football Announcers Gebruik - dummies

Een van de moeilijkste en meest intimiderende onderdelen over het volgen van een Amerikaans voetbalwedstrijd is dat de presentatoren soms een vreemde taal lijken te spreken die alleen bekend is bij echte voetballiefhebbers. Maar als je een aantal belangrijke termen onthoudt, ben je ver voor op het spel. Hier zijn enkele voetbaltermen die je misschien hoort, ...

Het begin van een voetbalspel: The Kickoff - dummies

Het begin van een voetbalspel: The Kickoff - dummies

Voor Amerikaanse voetbalfans, de openingsaftrap is een opwindende start voor elke game. Ze zien de tweezijdige sensatie van het ene team dat probeert het andere te blokkeren en helpt de herhaler om door en voorbij 11 snelladers van het trapende team te rennen. (Wel, maak die tien spelers.De kicker staat meestal rond de 50-yard-lijn, ...

Uw voetbalcoachtoelen afstemmen op een leeftijdsgroep - dummies

Uw voetbalcoachtoelen afstemmen op een leeftijdsgroep - dummies

Elk kind in uw team is anders zoveel manieren. Sommigen zijn begaafde hardlopers, anderen kunnen duizelingwekkende vangsten maken en wat moeite om simpelweg de basistechnieken van het spel te vatten. Ongeacht de sterke en zwakke punten van de kinderen, die overal op de kaart staan, hebben jongeren algemene kenmerken die worden beïnvloed ...