static c
Belang en gebruik van statisch in C ++ met voorbeelden.
In onze vorige onderwerpen over opslagklassen maakten we kennis met het woord statisch. We hebben geleerd over statische variabelen die worden gedeclareerd in een C ++ -programma. We weten dat statische variabelen slechts één keer worden geïnitialiseerd en dat ze de waarde gedurende het hele programma behouden.
Net als bij de statische variabelen, zullen we in deze tutorial het gebruik van een statisch trefwoord uitbreiden naar:
- Statische lidvariabelen in een klasse
- Statische klasse-objecten
- Statische methoden klasse
Bekijk hier de diepgaande C ++ trainingshandleidingen.
Wat je leert:
- Statische lidvariabelen in een klasse
- Statische klasseobjecten
- Statische methoden in een klasse
- Doel van statische functies
- Gevolgtrekking
- Aanbevolen literatuur
Statische lidvariabelen in een klasse
Een statische variabele wordt nooit op een stapel toegewezen. Ze krijgen ruimte toegewezen op verschillende statische opslag. Dit betekent dat wanneer we een statische variabele in een klasse declareren, deze variabele wordt gedeeld door alle objecten van die klasse.
Aangezien statische variabelen slechts één keer worden geïnitialiseerd en worden gedeeld door alle objecten van een klasse, worden de statische variabelen nooit geïnitialiseerd door een constructor. In plaats daarvan moet de statische variabele slechts één keer expliciet buiten de klasse worden geïnitialiseerd met behulp van de operator voor bereikresolutie (: :).
Wanneer het eerste object wordt gemaakt, worden alle statische gegevens van het primitieve type op nul geïnitialiseerd als er geen andere initialisatie aanwezig is.
Bekijk het volgende voorbeeld dat de statische variabele in een klasse laat zien.
Zoals weergegeven in de onderstaande code, hebben we de statische variabele count als lid van het klassevoorbeeld. Merk op dat we deze variabele expliciet buiten de klasse hebben geïnitialiseerd met de beginwaarde = 0;
verschil tussen soapui en soapui pro
Vervolgens verhogen we deze statische variabele in de constructor van de klasse.
Laten we eens kijken naar een voorbeeldprogramma.
Uitgang:
Aantal = 0
Aantal = 1
Aantal = 2
In de hoofdfunctie maken we drie verschillende objecten. In de uitvoer zien we dat de waarde van de statische variabele behouden blijft tussen de objectcreaties en niet opnieuw wordt ingesteld bij elke objectcreatie. Dit voor het eerste object, count = 0. Dan wordt het opgehoogd tot 1. Voor het volgende object is het aantal = 1 enzovoort.
Als de telling een gewone variabele was, zou de uitvoer zijn geweest:
Aantal = 0
Aantal = 0
Aantal = 0
Statische klasseobjecten
Net als statische lidvariabelen van een klasse, kunnen we klasseobjecten als statisch declareren. Statische klasseobjecten worden ook slechts één keer geïnitialiseerd en blijven gedurende het hele programma actief. Omdat het object een door de gebruiker gedefinieerd type is, wordt een statisch klasseobject op dezelfde manier geïnitialiseerd als de gewone objecten met behulp van een constructor.
Laten we een programmeervoorbeeld nemen om statische klasseobjecten beter te begrijpen.
In dit programma hebben we een klasse xyz met een constructor en een destructor. In de hoofdfunctie declareren we een variabele x = 0; Als x gelijk is aan nul, maken we een statisch object van klasse xyz.
Het programma geeft de volgende output.
Uitgang:
Constructor :: xyz
Einde Main
Destructor :: xyz
Normaal gesproken had de output moeten zijn
Constructor :: xyz
Destructor :: xyz
Einde Main
Maar als we een statisch object maken, heeft dit object een bereik tot het einde van het programma en niet wanneer het object buiten het bereik valt (end of if-instructie). Dit is de reden waarom de destructor voor object obj pas wordt uitgevoerd nadat het einde van de hoofdfunctie is bereikt.
Statische methoden in een klasse
We kunnen ook statische methoden in een klas hebben. Net als statische objecten en statische lidvariabelen, hebben statische lidfuncties ook een bereik totdat de uitvoering van het programma eindigt.
Wanneer een klassemethode statisch wordt verklaard, heeft deze alleen toegang tot statische leden, d.w.z. statische variabelen en statische functies van de klasse. Het heeft geen toegang tot gewone leden van de klas.
Er is ook geen 'deze' aanwijzer beschikbaar voor statische klassemethoden.
We mogen de object- en puntoperator gebruiken om toegang te krijgen tot de statische methoden van een klasse, maar het wordt aanbevolen om de klassenaam en de operator voor bereikresolutie te gebruiken om toegang te krijgen tot deze methoden.
Hieronder ziet u een voorbeeld van het gebruik van een statische methode in een klas.
In dit voorbeeld hebben we twee statische lidvariabelen A en B gedefinieerd, en een statische methode printValues. De variabelen A en B worden geïnitialiseerd op respectievelijk de waarden 10 en 20. In de statische methode printValues ondergaan waarden van A en B respectievelijk post-increment en pre-increment. Daarna worden de waarden afgedrukt.
In de hoofdmethode noemen we de statische methode printValues rechtstreeks met behulp van de klassenaam, omdat we geen enkel object nodig hebben om de statische functies aan te roepen.
Uitgang:
Waarde van A: 11
Waarde van B: 21
Het screenshot van dezelfde output wordt hieronder gegeven.
Dus in de uitvoer zien we dat de waarden van beide statische variabelen worden gewijzigd volgens de bewerkingen die erop worden uitgevoerd.
Doel van statische functies
Nu we de verschillende toepassingen van trefwoord statisch in deze zelfstudie hebben gezien, blijft de vraag wat het doel is van statische functies.
gebruik van c ++ in de echte wereld
Het doel van statische functies kan als volgt worden samengevat:
- We gebruiken statische functies wanneer die functie niet afhankelijk is van het object voor het aanroepen en werken.
- Nog een ander doel van het gebruik van statische functies is om het gebruik ervan te beperken. In tegenstelling tot algemene functies is de toegang tot statische functies beperkt tot het bestand waarin ze zijn geplaatst. Om de toegang tot de functie te beperken, maken we deze dus statisch.
- Afgezien van de bovenstaande twee redenen, gebruiken we statische functies wanneer we geen object van een klasse willen maken om een functie uit te voeren die niet verwijst naar enige klasleden.
Gevolgtrekking
Om dit onderwerp af te sluiten, kunnen we zeggen dat statische sleutelwoorden in C ++ op verschillende manieren kunnen worden gebruikt om variabelen, lidvariabelen, klasseobjecten, methoden, enz.
Statische lidfuncties en variabelen hoeven niet met het object te worden benaderd, maar kunnen rechtstreeks worden benaderd met de klassenaam. Ook blijft het bereik van statische entiteiten tijdens de uitvoering van het programma. Daarom kan een statisch sleutelwoord ook worden gebruikt om de toegang van een bepaalde entiteit te regelen.
In onze aanstaande tutorials zullen we meer leren over verschillende andere OOP-onderwerpen in C ++.
Kijk hier om AZ van C ++ trainingshandleidingen hier te zien.
Aanbevolen literatuur
- Bespotten van privé-, statische en ongeldige methoden met behulp van Mockito
- Statisch testen en dynamisch testen - Verschil tussen deze twee belangrijke testtechnieken
- TOP 40 analysehulpmiddelen voor statische codes (beste analysehulpmiddelen voor broncode)
- Beste GRATIS C # Tutorial-serie: de ultieme C # -gids voor beginners
- Parametrering van statische waarden in LoadRunner
- Python-variabelen
- Soorten overerving in C ++
- Variabelen in C ++