‫Cześć i witaj.
‫W tym wykładzie przyjrzymy się odpowiednikowi czystych funkcji w języku C++, czyli
‫funkcji CONST.
‫Zobaczymy, czym jest to słowo kluczowe, jak go używamy i jak ogranicza to, co możemy zrobić w naszym
‫kodzie, aby uczynić nas bezpieczniejszymi.
‫Zanurzmy się i zobaczmy, jak to działa.
‫W planach byliśmy w stanie uczynić funkcję czystą, a to oznaczało, że mogliśmy
‫wyeliminować potrzebę pinów wykonawczych.
‫Teraz w C++ możemy zrobić coś nieco silniejszego, czyli stworzyć koncepcję funkcji.
‫Co to znaczy uczynić funkcję stałą?
‫Oznacza to, że ta funkcja nie może modyfikować stanu twojej klasy i jest faktycznie egzekwowana przez
‫reguły kompilatora.
‫Więc podam przykład.
‫Gdybym miał wyrzucić funkcję powrotu platformy, nie jest to funkcja, która powinna modyfikować cokolwiek w
‫klasie i byłby to naprawdę błąd, gdybyśmy o tym zapomnieli, ponieważ byłoby dziwnie, gdybyśmy to
‫wywołali i użyli, a instrukcja rzeczywiście się zmieniła lokalizacji platformy lub czy zaktualizowała odległość ruchu
‫lub prędkość platformy.
‫Aby więc zachować uczciwość, możemy sprawić, że będzie to const.
‫Robimy to, umieszczając słowo kluczowe contact po nawiasach funkcji.
‫Tutaj też często zostawiamy miejsce.
‫Teraz, aby poprawnie dopasować się do funkcji w pliku C++, musimy również tam
‫umieścić to słowo kluczowe const.
‫Teraz, jak powiedziałem, robi to teraz błędem robienie czegokolwiek, co mogłoby zmodyfikować klasę.
‫Więc gdyby platforma wróciła, spróbowałbym zmodyfikować zmienną klasy, taką jak odległość ruchu.
‫Mogę spróbować ustawić odległość ruchu na 200.
‫Zobaczmy, co się stanie, gdy przejdziemy do stanu nierzeczywistego i naciśniemy przycisk kompilacji.
‫Dobra.
‫Widać, że teraz jest błąd.
‫Nie kompiluje się, a jeśli spojrzysz na błąd, zobaczysz, że jest tu coś,
‫co mówi się o niemożności zmodyfikowania czegoś, ponieważ dostęp do niego uzyskuje się za pomocą wskaźnika kontaktowego.
‫Teraz nie martw się o ten język.
‫Trochę trudno to zinterpretować, ale chodzi o to, że słowo kluczowe const było tam i mówi, że
‫nie jest w stanie czegoś zmienić, a to jest kluczowe.
‫Ponadto, jeśli wywołałeś jakiekolwiek funkcje, które nie są oznaczone jako stałe, to również jest problem.
‫Więc chociaż dobrze jest zadzwonić do lokalizacji aktora, która jest funkcją kontaktu, niczego nie zmienia.
‫Po prostu dostaje lokalizację.
‫Wywoływanie lokalizacji aktora, która nie została oznaczona jako stała, nie jest w porządku.
‫A więc to nie jest ważne.
‫Może to być modyfikacja klasy.
‫Tak więc żadna funkcja, która nie jest oznaczona jako świadoma, nie może być wywołana z poziomu funkcji kontaktowej.
‫I tak widać pojawiający się problem.
‫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
‫get odległość została przeniesiona nie została oznaczona jako taka.
‫Tak szybkie ładowanie, aby uzyskać przesuniętą odległość const, aby uzyskać przesuniętą odległość const, więc w nagłówku i zobacz
‫plik p, dodasz te słowa kluczowe const.
‫Niech C++ wie, że nie powinien modyfikować klasy i czy się kompiluje.
‫Teraz zatrzymaj wideo i spróbuj.
‫Dobra.
‫Witamy spowrotem.
‫Więc najpierw przejdziemy do nagłówka akt.
‫A po nawiasach zamykających dodamy pojęcie przestrzeni, a następnie wrócimy do
‫pliku C++.
‫A gdy odległość zostanie przesunięta w nawias, umieścimy konkurs kosmiczny.
‫Teraz faliste linie pod przesuniętą odległością powinny zostać zaktualizowane za chwilę.
‫Ale jeśli przejdziemy do Unreal i naciśniemy przycisk kompilacji, będzie to ostateczny arbiter, czy kompilatorowi podoba
‫się to, co zrobiliśmy, czy nie.
‫I tym razem kompilacja przebiegła pomyślnie, co oznacza, że poprawnie zaktualizowaliśmy nasz
‫kod.
‫I to ma sens, ponieważ nic nie jest wzywane z odległości, co nie jest kontaktem,
‫nie próbuje niczego zmienić.
‫A tam, gdzie wywołujemy funkcję w przypadku powrotu platformy, używamy tylko funkcji kontaktowych i jest to
‫dla nas sposób na zwiększenie bezpieczeństwa naszego kodu, ponieważ funkcje nie będą zmieniać rzeczy
‫bez naszej wiedzy.
‫Teraz jako małe ćwiczenie dla siebie, możesz chcieć przejrzeć i przyjrzeć się wszystkim funkcjom, których używaliśmy
‫do tej pory i zobaczyć, które z nich są oznaczone jako stałe, a które nie.
‫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
‫wyskakujące okienko, niezależnie od tego, czy po nawiasach ma kontakt, czy nie.
‫Można powiedzieć, że z aktywną lokalizacją najechanie na nią daje mi stałą, najechanie na nazwę get daje mi również, że jest
‫to stałe i ma to sens.
‫Żaden z tych dwóch nie powinien zmieniać stanu naszej klasy.
‫Teraz, jeśli najadę kursorem na tik, zobaczysz, że ten nie jest oznaczony jako stały.
‫Ma to sens, ponieważ Tick jest zwykle używany do aktualizowania pozycji klasy w świecie lub dowolnego
‫stanu klasy.
‫I mamy nasz wektor.
‫Jeśli najedziemy kursorem na bezpieczną, normalną, widać, że jest ona oznaczona jako stała,
‫ponieważ uzyskanie bezpiecznej normalnej w rzeczywistości nie modyfikuje wektora, po prostu zwraca wartość z nowym wektorem.
‫Więc to jest to.
‫Na tym wykładzie nauczyliśmy się dodawać const do naszych funkcji, aby zwiększyć bezpieczeństwo naszego kodu.
‫Do zobaczenia w następnym.