﻿1
00:00:04,420 --> 00:00:05,230
‫Hallo en welkom.

2
00:00:05,230 --> 00:00:10,840
‫In deze lezing gaan we kijken naar het C++-equivalent van pure blauwdrukfuncties,

3
00:00:10,840 --> 00:00:12,190
‫namelijk CONST-functies.

4
00:00:12,460 --> 00:00:18,130
‫We gaan kijken wat dit sleutelwoord is, hoe we het gebruiken en hoe het beperkt wat we in onze code kunnen

5
00:00:18,130 --> 00:00:20,020
‫doen om ons veiliger te maken.

6
00:00:20,140 --> 00:00:21,730
‫Laten we erin duiken en kijken hoe het werkt.

7
00:00:22,790 --> 00:00:29,540
‫In blauwdrukken konden we een functie puur maken, en dat betekende dat we de noodzaak

8
00:00:29,540 --> 00:00:32,300
‫voor de uitvoeringspinnen konden wegnemen.

9
00:00:32,720 --> 00:00:38,570
‫Nu kunnen we in C++ iets sterkers doen, namelijk een functieconcept maken.

10
00:00:39,260 --> 00:00:41,300
‫Wat betekent het om een functie const te maken?

11
00:00:41,690 --> 00:00:50,750
‫Het betekent dat die functie de status van je klasse niet kan wijzigen en feitelijk wordt afgedwongen door de regels van

12
00:00:50,750 --> 00:00:51,890
‫de compiler.

13
00:00:51,920 --> 00:00:54,400
‫Dus laat me je een voorbeeld geven.

14
00:00:54,410 --> 00:01:01,160
‫Als ik de platformretourfunctie zou uitschakelen, is dit geen functie die iets in de klasse zou moeten wijzigen en het

15
00:01:01,160 --> 00:01:07,730
‫zou echt een fout zijn als we dat zouden vergeten, omdat het raar zou zijn als dit wordt aangeroepen

16
00:01:07,730 --> 00:01:14,480
‫en gebruikt en als de instructie daadwerkelijk is gewijzigd de locatie van het platform of als het de verplaatsingsafstand

17
00:01:14,480 --> 00:01:16,220
‫of platformsnelheid heeft bijgewerkt.

18
00:01:16,760 --> 00:01:20,510
‫Dus om onszelf daar eerlijk aan te houden, kunnen we het const.

19
00:01:20,510 --> 00:01:28,570
‫En de manier waarop we dit doen, is door het contactsleutelwoord achter de haakjes van de functie te plaatsen.

20
00:01:28,580 --> 00:01:30,710
‫Ook hier laten we vaak een plekje vrij.

21
00:01:31,310 --> 00:01:38,330
‫Nu, om ervoor te zorgen dat het correct overeenkomt met de functie in het C++-bestand, moeten

22
00:01:38,330 --> 00:01:41,600
‫we dat const-sleutelwoord daar ook plaatsen.

23
00:01:41,750 --> 00:01:46,670
‫Nu, zoals ik al zei, dit maakt het nu een fout om iets te doen dat de klasse zou wijzigen.

24
00:01:46,680 --> 00:01:53,210
‫Dus als het platform zou terugkeren, zou ik proberen een klassevariabele zoals verplaatsingsafstand te wijzigen.

25
00:01:53,570 --> 00:01:56,810
‫Ik zou proberen de verplaatsingsafstand op 200 te zetten.

26
00:01:57,350 --> 00:02:01,550
‫Laten we eens kijken wat er gebeurt als we naar onwerkelijk gaan en op de compileerknop drukken.

27
00:02:01,640 --> 00:02:01,990
‫Oké.

28
00:02:02,000 --> 00:02:03,740
‫U kunt zien dat er nu een fout is opgetreden.

29
00:02:03,740 --> 00:02:08,900
‫Het kan niet worden gebouwd en als je naar de fout kijkt, kun je zien

30
00:02:08,900 --> 00:02:14,930
‫dat hier iets wordt gezegd over het niet kunnen wijzigen van iets omdat het wordt benaderd via een contactaanwijzer.

31
00:02:15,200 --> 00:02:17,270
‫Maak je geen zorgen over die taal.

32
00:02:17,270 --> 00:02:22,430
‫Het is een beetje moeilijk te interpreteren, maar het punt is dat het sleutelwoord const er was en het zegt dat

33
00:02:22,430 --> 00:02:25,690
‫het niet in staat is iets aan te passen en dat is cruciaal.

34
00:02:25,700 --> 00:02:31,760
‫Ook als je functies hebt aangeroepen die niet als const zijn gemarkeerd, is dat ook een probleem.

35
00:02:31,760 --> 00:02:37,930
‫Dus hoewel het prima is om de locatie van een acteur te bellen, verandert dat niets aan een contactfunctie.

36
00:02:37,930 --> 00:02:39,170
‫Het krijgt gewoon de locatie.

37
00:02:39,530 --> 00:02:46,310
‫Het is niet oké om een ingestelde acteurslocatie te bellen die niet is gemarkeerd als const.

38
00:02:46,550 --> 00:02:48,080
‫En dus niet geldig.

39
00:02:48,080 --> 00:02:50,250
‫Het zou de klasse kunnen wijzigen.

40
00:02:50,250 --> 00:02:55,520
‫Dus elke functie die niet als bewust is gemarkeerd, mag niet worden aangeroepen vanuit een contactfunctie.

41
00:02:56,120 --> 00:02:58,700
‫En zo zie je een probleem ontstaan.

42
00:02:58,700 --> 00:03:05,870
‫We kunnen afstand verplaatsen vanuit een gegarandeerd platformretour niet echt noemen, want als platformretour beperkt is, maar

43
00:03:05,870 --> 00:03:09,410
‫afstand verplaatsen niet als zodanig is gemarkeerd.

44
00:03:09,620 --> 00:03:16,220
‫Dus snel opladen om de afstand te krijgen die is verplaatst const make get distance move const dus in de kop

45
00:03:16,220 --> 00:03:19,070
‫en zie p-bestand dat je die const-sleutelwoorden gaat toevoegen.

46
00:03:19,070 --> 00:03:23,810
‫Laat C++ weten dat het de klasse niet mag wijzigen en compileert.

47
00:03:23,810 --> 00:03:25,850
‫Pauzeer nu de video en probeer het.

48
00:03:29,260 --> 00:03:29,730
‫Oké.

49
00:03:29,740 --> 00:03:30,340
‫Welkom terug.

50
00:03:30,370 --> 00:03:32,800
‫Dus we gaan eerst naar het hoofd van het dossier.

51
00:03:32,800 --> 00:03:37,090
‫En na de afsluitende haakjes gaan we een ruimteconcept toevoegen en dan gaan we terug

52
00:03:37,090 --> 00:03:38,290
‫naar het C++-bestand.

53
00:03:38,650 --> 00:03:42,340
‫En nadat de afstand tussen haakjes is verplaatst, gaan we een ruimtewedstrijd houden.

54
00:03:42,820 --> 00:03:47,650
‫Nu zouden de kronkelende lijnen onder de afstand verplaatst moeten worden binnen een korte tijd bijgewerkt.

55
00:03:47,650 --> 00:03:53,230
‫Maar als we naar Unreal gaan en op de compileerknop drukken, zal dat de ultieme arbiter zijn of de compiler het

56
00:03:53,230 --> 00:03:55,570
‫leuk vindt wat we hebben gedaan of niet.

57
00:03:55,750 --> 00:04:02,200
‫En deze keer is de compilatie gelukt, wat betekent dat we onze code correct hebben

58
00:04:02,200 --> 00:04:02,860
‫bijgewerkt.

59
00:04:03,220 --> 00:04:08,650
‫En dat is logisch, want er wordt niets geroepen van afstand verplaatsen dat geen contact is, het is

60
00:04:08,890 --> 00:04:10,510
‫niet proberen iets te veranderen.

61
00:04:10,930 --> 00:04:17,830
‫En waar we een functie aanroepen als het platform terugkeert, gebruiken we alleen contactfuncties en dit is een

62
00:04:18,040 --> 00:04:24,100
‫manier voor ons om de veiligheid van onze code te vergroten, omdat functies niets veranderen zonder

63
00:04:24,430 --> 00:04:26,170
‫dat we het weten.

64
00:04:26,200 --> 00:04:30,730
‫Nu, als een kleine oefening voor jezelf, wil je misschien alle functies bekijken die we tot

65
00:04:30,730 --> 00:04:35,170
‫nu toe hebben gebruikt en zien welke ervan als constant zijn gemarkeerd en welke niet.

66
00:04:35,500 --> 00:04:41,800
‫U kunt dit doen door simpelweg met uw muis over een functie te gaan, zoals op een locatie komen en te kijken

67
00:04:41,800 --> 00:04:45,970
‫of de pop-up die is opgenomen, al dan niet na de haakjes contact heeft.

68
00:04:46,270 --> 00:04:53,170
‫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

69
00:04:53,170 --> 00:04:55,300
‫dit constant is en dat het logisch is.

70
00:04:55,330 --> 00:04:59,290
‫Geen van die twee zou de staat van onze klas moeten veranderen.

71
00:04:59,860 --> 00:05:03,790
‫Als ik nu over het vinkje zweef, kun je zien dat deze niet als constant is gemarkeerd.

72
00:05:03,790 --> 00:05:10,030
‫Dat is logisch, want Tick wordt meestal gebruikt om bij te werken hoe een klasse zich in de wereld of in een van

73
00:05:10,030 --> 00:05:11,080
‫de klassen bevindt.

74
00:05:11,620 --> 00:05:13,210
‫En we hebben onze vector.

75
00:05:13,360 --> 00:05:18,820
‫Als we de muisaanwijzer erop houden, de safe, normal krijgen, kun je zien dat het als constanten is

76
00:05:18,820 --> 00:05:24,760
‫gemarkeerd, omdat get safe normal de vector niet echt wijzigt, het retourneert alleen een waarde met een nieuwe vector erin.

77
00:05:24,820 --> 00:05:25,480
‫Dus dat is het.

78
00:05:25,480 --> 00:05:32,380
‫Voor deze lezing hebben we geleerd over het toevoegen van const aan onze functies om de veiligheid van onze code te vergroten.

79
00:05:32,590 --> 00:05:33,790
‫Ik zie je in de volgende.

