‫Hallo en welkom.
‫In deze lezing gaan we kijken naar het C++-equivalent van pure blauwdrukfuncties,
‫namelijk CONST-functies.
‫We gaan kijken wat dit sleutelwoord is, hoe we het gebruiken en hoe het beperkt wat we in onze code kunnen
‫doen om ons veiliger te maken.
‫Laten we erin duiken en kijken hoe het werkt.
‫In blauwdrukken konden we een functie puur maken, en dat betekende dat we de noodzaak
‫voor de uitvoeringspinnen konden wegnemen.
‫Nu kunnen we in C++ iets sterkers doen, namelijk een functieconcept maken.
‫Wat betekent het om een functie const te maken?
‫Het betekent dat die functie de status van je klasse niet kan wijzigen en feitelijk wordt afgedwongen door de regels van
‫de compiler.
‫Dus laat me je een voorbeeld geven.
‫Als ik de platformretourfunctie zou uitschakelen, is dit geen functie die iets in de klasse zou moeten wijzigen en het
‫zou echt een fout zijn als we dat zouden vergeten, omdat het raar zou zijn als dit wordt aangeroepen
‫en gebruikt en als de instructie daadwerkelijk is gewijzigd de locatie van het platform of als het de verplaatsingsafstand
‫of platformsnelheid heeft bijgewerkt.
‫Dus om onszelf daar eerlijk aan te houden, kunnen we het const.
‫En de manier waarop we dit doen, is door het contactsleutelwoord achter de haakjes van de functie te plaatsen.
‫Ook hier laten we vaak een plekje vrij.
‫Nu, om ervoor te zorgen dat het correct overeenkomt met de functie in het C++-bestand, moeten
‫we dat const-sleutelwoord daar ook plaatsen.
‫Nu, zoals ik al zei, dit maakt het nu een fout om iets te doen dat de klasse zou wijzigen.
‫Dus als het platform zou terugkeren, zou ik proberen een klassevariabele zoals verplaatsingsafstand te wijzigen.
‫Ik zou proberen de verplaatsingsafstand op 200 te zetten.
‫Laten we eens kijken wat er gebeurt als we naar onwerkelijk gaan en op de compileerknop drukken.
‫Oké.
‫U kunt zien dat er nu een fout is opgetreden.
‫Het kan niet worden gebouwd en als je naar de fout kijkt, kun je zien
‫dat hier iets wordt gezegd over het niet kunnen wijzigen van iets omdat het wordt benaderd via een contactaanwijzer.
‫Maak je geen zorgen over die taal.
‫Het is een beetje moeilijk te interpreteren, maar het punt is dat het sleutelwoord const er was en het zegt dat
‫het niet in staat is iets aan te passen en dat is cruciaal.
‫Ook als je functies hebt aangeroepen die niet als const zijn gemarkeerd, is dat ook een probleem.
‫Dus hoewel het prima is om de locatie van een acteur te bellen, verandert dat niets aan een contactfunctie.
‫Het krijgt gewoon de locatie.
‫Het is niet oké om een ingestelde acteurslocatie te bellen die niet is gemarkeerd als const.
‫En dus niet geldig.
‫Het zou de klasse kunnen wijzigen.
‫Dus elke functie die niet als bewust is gemarkeerd, mag niet worden aangeroepen vanuit een contactfunctie.
‫En zo zie je een probleem ontstaan.
‫We kunnen afstand verplaatsen vanuit een gegarandeerd platformretour niet echt noemen, want als platformretour beperkt is, maar
‫afstand verplaatsen niet als zodanig is gemarkeerd.
‫Dus snel opladen om de afstand te krijgen die is verplaatst const make get distance move const dus in de kop
‫en zie p-bestand dat je die const-sleutelwoorden gaat toevoegen.
‫Laat C++ weten dat het de klasse niet mag wijzigen en compileert.
‫Pauzeer nu de video en probeer het.
‫Oké.
‫Welkom terug.
‫Dus we gaan eerst naar het hoofd van het dossier.
‫En na de afsluitende haakjes gaan we een ruimteconcept toevoegen en dan gaan we terug
‫naar het C++-bestand.
‫En nadat de afstand tussen haakjes is verplaatst, gaan we een ruimtewedstrijd houden.
‫Nu zouden de kronkelende lijnen onder de afstand verplaatst moeten worden binnen een korte tijd bijgewerkt.
‫Maar als we naar Unreal gaan en op de compileerknop drukken, zal dat de ultieme arbiter zijn of de compiler het
‫leuk vindt wat we hebben gedaan of niet.
‫En deze keer is de compilatie gelukt, wat betekent dat we onze code correct hebben
‫bijgewerkt.
‫En dat is logisch, want er wordt niets geroepen van afstand verplaatsen dat geen contact is, het is
‫niet proberen iets te veranderen.
‫En waar we een functie aanroepen als het platform terugkeert, gebruiken we alleen contactfuncties en dit is een
‫manier voor ons om de veiligheid van onze code te vergroten, omdat functies niets veranderen zonder
‫dat we het weten.
‫Nu, als een kleine oefening voor jezelf, wil je misschien alle functies bekijken die we tot
‫nu toe hebben gebruikt en zien welke ervan als constant zijn gemarkeerd en welke niet.
‫U kunt dit doen door simpelweg met uw muis over een functie te gaan, zoals op een locatie komen en te kijken
‫of de pop-up die is opgenomen, al dan niet na de haakjes contact heeft.
‫Je kunt zeggen met actieve locatie die erover zweeft, het geeft me const als ik over de naam van de naam zweef, geeft me ook dat
‫dit constant is en dat het logisch is.
‫Geen van die twee zou de staat van onze klas moeten veranderen.
‫Als ik nu over het vinkje zweef, kun je zien dat deze niet als constant is gemarkeerd.
‫Dat is logisch, want Tick wordt meestal gebruikt om bij te werken hoe een klasse zich in de wereld of in een van
‫de klassen bevindt.
‫En we hebben onze vector.
‫Als we de muisaanwijzer erop houden, de safe, normal krijgen, kun je zien dat het als constanten is
‫gemarkeerd, omdat get safe normal de vector niet echt wijzigt, het retourneert alleen een waarde met een nieuwe vector erin.
‫Dus dat is het.
‫Voor deze lezing hebben we geleerd over het toevoegen van const aan onze functies om de veiligheid van onze code te vergroten.
‫Ik zie je in de volgende.