﻿1
00:00:04,420 --> 00:00:05,230
‫Cześć i witaj.

2
00:00:05,230 --> 00:00:10,840
‫W tym wykładzie przyjrzymy się odpowiednikowi czystych funkcji w języku C++, czyli

3
00:00:10,840 --> 00:00:12,190
‫funkcji CONST.

4
00:00:12,460 --> 00:00:18,130
‫Zobaczymy, czym jest to słowo kluczowe, jak go używamy i jak ogranicza to, co możemy zrobić w naszym

5
00:00:18,130 --> 00:00:20,020
‫kodzie, aby uczynić nas bezpieczniejszymi.

6
00:00:20,140 --> 00:00:21,730
‫Zanurzmy się i zobaczmy, jak to działa.

7
00:00:22,790 --> 00:00:29,540
‫W planach byliśmy w stanie uczynić funkcję czystą, a to oznaczało, że mogliśmy

8
00:00:29,540 --> 00:00:32,300
‫wyeliminować potrzebę pinów wykonawczych.

9
00:00:32,720 --> 00:00:38,570
‫Teraz w C++ możemy zrobić coś nieco silniejszego, czyli stworzyć koncepcję funkcji.

10
00:00:39,260 --> 00:00:41,300
‫Co to znaczy uczynić funkcję stałą?

11
00:00:41,690 --> 00:00:50,750
‫Oznacza to, że ta funkcja nie może modyfikować stanu twojej klasy i jest faktycznie egzekwowana przez

12
00:00:50,750 --> 00:00:51,890
‫reguły kompilatora.

13
00:00:51,920 --> 00:00:54,400
‫Więc podam przykład.

14
00:00:54,410 --> 00:01:01,160
‫Gdybym miał wyrzucić funkcję powrotu platformy, nie jest to funkcja, która powinna modyfikować cokolwiek w

15
00:01:01,160 --> 00:01:07,730
‫klasie i byłby to naprawdę błąd, gdybyśmy o tym zapomnieli, ponieważ byłoby dziwnie, gdybyśmy to

16
00:01:07,730 --> 00:01:14,480
‫wywołali i użyli, a instrukcja rzeczywiście się zmieniła lokalizacji platformy lub czy zaktualizowała odległość ruchu

17
00:01:14,480 --> 00:01:16,220
‫lub prędkość platformy.

18
00:01:16,760 --> 00:01:20,510
‫Aby więc zachować uczciwość, możemy sprawić, że będzie to const.

19
00:01:20,510 --> 00:01:28,570
‫Robimy to, umieszczając słowo kluczowe contact po nawiasach funkcji.

20
00:01:28,580 --> 00:01:30,710
‫Tutaj też często zostawiamy miejsce.

21
00:01:31,310 --> 00:01:38,330
‫Teraz, aby poprawnie dopasować się do funkcji w pliku C++, musimy również tam

22
00:01:38,330 --> 00:01:41,600
‫umieścić to słowo kluczowe const.

23
00:01:41,750 --> 00:01:46,670
‫Teraz, jak powiedziałem, robi to teraz błędem robienie czegokolwiek, co mogłoby zmodyfikować klasę.

24
00:01:46,680 --> 00:01:53,210
‫Więc gdyby platforma wróciła, spróbowałbym zmodyfikować zmienną klasy, taką jak odległość ruchu.

25
00:01:53,570 --> 00:01:56,810
‫Mogę spróbować ustawić odległość ruchu na 200.

26
00:01:57,350 --> 00:02:01,550
‫Zobaczmy, co się stanie, gdy przejdziemy do stanu nierzeczywistego i naciśniemy przycisk kompilacji.

27
00:02:01,640 --> 00:02:01,990
‫Dobra.

28
00:02:02,000 --> 00:02:03,740
‫Widać, że teraz jest błąd.

29
00:02:03,740 --> 00:02:08,900
‫Nie kompiluje się, a jeśli spojrzysz na błąd, zobaczysz, że jest tu coś,

30
00:02:08,900 --> 00:02:14,930
‫co mówi się o niemożności zmodyfikowania czegoś, ponieważ dostęp do niego uzyskuje się za pomocą wskaźnika kontaktowego.

31
00:02:15,200 --> 00:02:17,270
‫Teraz nie martw się o ten język.

32
00:02:17,270 --> 00:02:22,430
‫Trochę trudno to zinterpretować, ale chodzi o to, że słowo kluczowe const było tam i mówi, że

33
00:02:22,430 --> 00:02:25,690
‫nie jest w stanie czegoś zmienić, a to jest kluczowe.

34
00:02:25,700 --> 00:02:31,760
‫Ponadto, jeśli wywołałeś jakiekolwiek funkcje, które nie są oznaczone jako stałe, to również jest problem.

35
00:02:31,760 --> 00:02:37,930
‫Więc chociaż dobrze jest zadzwonić do lokalizacji aktora, która jest funkcją kontaktu, niczego nie zmienia.

36
00:02:37,930 --> 00:02:39,170
‫Po prostu dostaje lokalizację.

37
00:02:39,530 --> 00:02:46,310
‫Wywoływanie lokalizacji aktora, która nie została oznaczona jako stała, nie jest w porządku.

38
00:02:46,550 --> 00:02:48,080
‫A więc to nie jest ważne.

39
00:02:48,080 --> 00:02:50,250
‫Może to być modyfikacja klasy.

40
00:02:50,250 --> 00:02:55,520
‫Tak więc żadna funkcja, która nie jest oznaczona jako świadoma, nie może być wywołana z poziomu funkcji kontaktowej.

41
00:02:56,120 --> 00:02:58,700
‫I tak widać pojawiający się problem.

42
00:02:58,700 --> 00:03:05,870
‫W rzeczywistości nie możemy wywołać przesunięcia odległości z poziomu gwarantowanego zwrotu platformy, ponieważ powrót platformy jest const, ale funkcja

43
00:03:05,870 --> 00:03:09,410
‫get odległość została przeniesiona nie została oznaczona jako taka.

44
00:03:09,620 --> 00:03:16,220
‫Tak szybkie ładowanie, aby uzyskać przesuniętą odległość const, aby uzyskać przesuniętą odległość const, więc w nagłówku i zobacz

45
00:03:16,220 --> 00:03:19,070
‫plik p, dodasz te słowa kluczowe const.

46
00:03:19,070 --> 00:03:23,810
‫Niech C++ wie, że nie powinien modyfikować klasy i czy się kompiluje.

47
00:03:23,810 --> 00:03:25,850
‫Teraz zatrzymaj wideo i spróbuj.

48
00:03:29,260 --> 00:03:29,730
‫Dobra.

49
00:03:29,740 --> 00:03:30,340
‫Witamy spowrotem.

50
00:03:30,370 --> 00:03:32,800
‫Więc najpierw przejdziemy do nagłówka akt.

51
00:03:32,800 --> 00:03:37,090
‫A po nawiasach zamykających dodamy pojęcie przestrzeni, a następnie wrócimy do

52
00:03:37,090 --> 00:03:38,290
‫pliku C++.

53
00:03:38,650 --> 00:03:42,340
‫A gdy odległość zostanie przesunięta w nawias, umieścimy konkurs kosmiczny.

54
00:03:42,820 --> 00:03:47,650
‫Teraz faliste linie pod przesuniętą odległością powinny zostać zaktualizowane za chwilę.

55
00:03:47,650 --> 00:03:53,230
‫Ale jeśli przejdziemy do Unreal i naciśniemy przycisk kompilacji, będzie to ostateczny arbiter, czy kompilatorowi podoba

56
00:03:53,230 --> 00:03:55,570
‫się to, co zrobiliśmy, czy nie.

57
00:03:55,750 --> 00:04:02,200
‫I tym razem kompilacja przebiegła pomyślnie, co oznacza, że poprawnie zaktualizowaliśmy nasz

58
00:04:02,200 --> 00:04:02,860
‫kod.

59
00:04:03,220 --> 00:04:08,650
‫I to ma sens, ponieważ nic nie jest wzywane z odległości, co nie jest kontaktem,

60
00:04:08,890 --> 00:04:10,510
‫nie próbuje niczego zmienić.

61
00:04:10,930 --> 00:04:17,830
‫A tam, gdzie wywołujemy funkcję w przypadku powrotu platformy, używamy tylko funkcji kontaktowych i jest to

62
00:04:18,040 --> 00:04:24,100
‫dla nas sposób na zwiększenie bezpieczeństwa naszego kodu, ponieważ funkcje nie będą zmieniać rzeczy

63
00:04:24,430 --> 00:04:26,170
‫bez naszej wiedzy.

64
00:04:26,200 --> 00:04:30,730
‫Teraz jako małe ćwiczenie dla siebie, możesz chcieć przejrzeć i przyjrzeć się wszystkim funkcjom, których używaliśmy

65
00:04:30,730 --> 00:04:35,170
‫do tej pory i zobaczyć, które z nich są oznaczone jako stałe, a które nie.

66
00:04:35,500 --> 00:04:41,800
‫Możesz to zrobić, po prostu najeżdżając kursorem na funkcję, taką jak dostaniesz się do lokalizacji, i sprawdzając, czy zawarte jest

67
00:04:41,800 --> 00:04:45,970
‫wyskakujące okienko, niezależnie od tego, czy po nawiasach ma kontakt, czy nie.

68
00:04:46,270 --> 00:04:53,170
‫Można powiedzieć, że z aktywną lokalizacją najechanie na nią daje mi stałą, najechanie na nazwę get daje mi również, że jest

69
00:04:53,170 --> 00:04:55,300
‫to stałe i ma to sens.

70
00:04:55,330 --> 00:04:59,290
‫Żaden z tych dwóch nie powinien zmieniać stanu naszej klasy.

71
00:04:59,860 --> 00:05:03,790
‫Teraz, jeśli najadę kursorem na tik, zobaczysz, że ten nie jest oznaczony jako stały.

72
00:05:03,790 --> 00:05:10,030
‫Ma to sens, ponieważ Tick jest zwykle używany do aktualizowania pozycji klasy w świecie lub dowolnego

73
00:05:10,030 --> 00:05:11,080
‫stanu klasy.

74
00:05:11,620 --> 00:05:13,210
‫I mamy nasz wektor.

75
00:05:13,360 --> 00:05:18,820
‫Jeśli najedziemy kursorem na bezpieczną, normalną, widać, że jest ona oznaczona jako stała,

76
00:05:18,820 --> 00:05:24,760
‫ponieważ uzyskanie bezpiecznej normalnej w rzeczywistości nie modyfikuje wektora, po prostu zwraca wartość z nowym wektorem.

77
00:05:24,820 --> 00:05:25,480
‫Więc to jest to.

78
00:05:25,480 --> 00:05:32,380
‫Na tym wykładzie nauczyliśmy się dodawać const do naszych funkcji, aby zwiększyć bezpieczeństwo naszego kodu.

79
00:05:32,590 --> 00:05:33,790
‫Do zobaczenia w następnym.

