‫Cześć i witaj.
‫Na tym wykładzie będziemy się uczyć o dziwnym zjawisku zwanym parametrem zewnętrznym.
‫Jest to parametr, który zamiast przekazywać wartość w C++, mamy tendencję do przekazywania wartości z
‫funkcji.
‫Zobaczymy również coś, co nazywa się stałym odniesieniem i jak te dwie
‫koncepcje są ze sobą powiązane.
‫Zanurzmy się i wymyślmy to.
‫Teraz.
‫Prawdziwym miejscem, w którym błyszczą odwołania, są parametry funkcji, ponieważ za każdym razem,
‫gdy tworzymy czas delta zmiennoprzecinkowego w naszym komponencie, robimy to, że pobieramy kopię tego oryginalnego
‫zmiennoprzecinkowego i przekazujemy go do funkcjonować.
‫Więc zamiast tego, możemy chcieć zrobić odniesienie do tego i przekazać to zamiast.
‫Więc wyobraźmy sobie, że mamy stworzyć funkcję, aby ją pobrać, z których każda nazywa się uszkodzeniem wydruku.
‫A jako argument tej funkcji chcemy przekazać uszkodzenie zmiennoprzecinkowe.
‫To, jak powiedziałem, utworzy kopię tego, co przekazujemy i skopiuje to do tej zmiennej.
‫Utwórz tę zmienną parametru wewnątrz funkcji uszkodzenia wydruku.
‫I musimy mieć tutaj również wartość zwracaną void, aby ją uzupełnić, i średnik na końcu.
‫Przejdźmy do C++ i kontynuujmy tę rozmowę.
‫Stwórzmy tutaj uszkodzenia druku.
‫Połóżmy przed sobą klasę, a zamiast średnika wstawmy kilka nawiasów klamrowych.
‫Mamy więc kopię zmiennej parametru uszkodzenia i jest to bezpieczne, ponieważ gdybym miał wyrządzić szkodę równą
‫pięciu, zmieniam tylko tę zmienną tutaj w ramach uszkodzeń wydruku.
‫Mam własną kopię.
‫Nie mogę tego zepsuć przez przypadek.
‫A co, jeśli nie chcę robić kopii?
‫Moją alternatywą byłoby skorzystanie z referencji.
‫Więc co mogę tutaj zrobić, to umieścić odwołanie zmiennoprzecinkowe, które spowoduje uszkodzenie wydruku, i
‫muszę to również zaktualizować w pliku C++.
‫A potem mogę mieć ten komunikat w dzienniku, że używamy odniesienia, chodźmy i zdejmijmy to,
‫a to w uszkodzeniu druku.
‫Więc teraz bierzemy nasze obrażenia i drukujemy aktualizacje, oświadczenia dziennika mówią, że uszkodzenie to ten przypadek uszkodzenia, to
‫jest to uszkodzenie.
‫A w naszym komponencie tikowym możemy zrobić uszkodzenie wydruku i przekazać zmienną uszkodzenia i umieścić średnik
‫na końcu.
‫I na razie możemy pozbyć się naszego odniesienia do obrażeń, ponieważ mamy teraz do czynienia z uszkodzonym pływakiem,
‫który jest tworzony w technologii.
‫Pamięć do tego została stworzona tutaj w Take, a następnie idziemy i przekazujemy ją do tej funkcji uszkodzenia druku.
‫Ale ponieważ parametr jest odniesieniem, tak naprawdę nie kopiujemy tego uszkodzenia.
‫Bierzemy jego adres i przechowujemy go w referencji, tak że kiedy używamy tego referencji
‫w dół wiersza, faktycznie uzyskujemy dostęp do oryginalnego kawałka pamięci.
‫Więc nie musiała się wydarzyć żadna kopia, aby wydrukować uszkodzenie.
‫Sprawdźmy teraz, czy rzeczywiście robi to, czego byśmy od niego oczekiwali.
‫Jeśli zmienię wartość obrażeń na przykład na pięć, a następnie ponownie skompiluję i wcisnę odtwarzanie, spójrz na
‫dziennik wyjściowy i wydruk, że obrażenia wynoszą pięć.
‫Ale ponieważ mamy odniesienie, wiemy, że możemy zaktualizować tę wartość.
‫Więc co mogę zrobić, to powiedzieć, że w ramach tej funkcji mogę zrobić, hej, obrażenia powinny być
‫równe dwóm.
‫A gdybym nie był ostrożny, gdybym myślał, że mam własną kopię, mógłbym pomyśleć, że to w porządku.
‫Ale w rzeczywistości w komponencie tikowym zmieniliśmy oryginalne zmienne A.
‫Jeśli umieszczę mały login tutaj, aby sprawdzić tę oryginalną zmienną dotyczącą obrażeń, a następnie wstawimy procent F i
‫przekażemy tutaj obrażenia, zacznijmy kod na żywo i skompilujmy to, a zaczniemy grać.
‫Zajrzyj do naszego dziennika wyników, a zobaczysz, że teraz obrażenia i pierwotne obrażenia
‫zostały zmodyfikowane.
‫Oboje zostali zmienieni na numer dwa, co nie jest wspaniałe.
‫Wiesz, możesz przypadkowo wyrządzić wiele szkód, jeśli wybaczysz grę słów, zmieniając zmienne,
‫których nie spodziewałeś się zmienić.
‫A oto kolejne zastosowanie tego słowa kluczowego const, które widzieliśmy w przeszłości.
‫Jeśli umieszczę const przed moim odwołaniem zmiennoprzecinkowym, to mówię tutaj, że powinno to być
‫odniesienie, którego nie można zmienić.
‫Nie możesz wywołać na nim żadnych funkcji bezkontaktowych, nie możesz tego ustawić.
‫Nie możesz w żaden sposób zmienić zawartości tej zmiennej.
‫Możesz go tylko używać, możesz go tylko czytać, możesz tylko zobaczyć to, co tam jest.
‫Więc jeśli wrócimy do I chwyć kopię, musimy upewnić się, że umieściliśmy tutaj również Const
‫w parametrach i możemy kontynuować kompilację i widzisz, że otrzymujemy niepowodzenie kompilacji, a błąd mówi, że uszkodzenia
‫nie można przypisane do niego, ponieważ jest to zmienna stała.
‫Daje nam to ochronę, której potrzebujemy.
‫Więc ogólnie rzecz biorąc, jeśli próbujemy przekazać zmienną w sposób efektywny, bez konieczności pobierania
‫kopii, zawsze będziemy używać słowa kluczowego contact, a także referencji, ponieważ
‫uniemożliwia to nam przypadkowo zmieniając tę zawartość.
‫Teraz jednak czasami chcesz go użyć do zmiany tej wartości.
‫I to, co możemy mieć jako przykład, możemy mieć zwracaną wartość logiczną i możemy chcieć powiedzieć, że ma
‫obrażenia, ale możemy również, jak to zrobiliśmy w Blueprint w przeszłości, chcieć mieć drugą wartość zwracaną.
‫Możemy więc powiedzieć, czy mamy jakieś uszkodzenia i co to za uszkodzenie?
‫Cóż, w tym przypadku sensowne jest użycie prostego odwołania bezkontaktowego, odwołania zmiennoprzecinkowego.
‫Obrażenia i zazwyczaj nazywamy to obrażeniami tylko po to, aby naprawdę było widoczne, że jest
‫to tak zwany parametr out.
‫To nie jest parametr do przekazywania rzeczy.
‫Jest to parametr do rozdawania rzeczy.
‫Teraz może to być trochę dziwne dziwactwo C++ i może być trudne do zauważenia.
‫Ale ogólnie rzecz biorąc, jeśli widzisz jakiekolwiek parametry, które są odniesieniem, ale nie
‫są oznaczone jako kontakt, możesz prawie założyć, że ktoś zamierzał użyć tego jako parametru wyjściowego.
‫Więc to właśnie mamy tutaj.
‫Mamy obrażenia.
‫A gdybyśmy mieli zaimplementować to w CPP, to możemy umieścić tutaj klasę na początku,
‫a tutaj możemy umieścić nasze nawiasy klamrowe.
‫Zamierzamy skomentować uszkodzenia odcisków linii, z których nie jest zadowolony, ponieważ próbujemy
‫ustawić odniesienie do kontaktu.
‫I zasadniczo to, co moglibyśmy tutaj zrobić, to zrobić jakiś kod, moglibyśmy zobaczyć, czy mamy jakieś uszkodzenia,
‫a następnie wydrukowalibyśmy, tak, w porządku.
‫Nasze obrażenia wynoszą pięć.
‫Więc to są szkody, które zostały wyrządzone i możemy wrócić.
‫To prawda, ponieważ zarobiliśmy trochę obrażeń i możemy to teraz wykorzystać w miejscach takich
‫jak komponenty TEC, aby uzyskać obrażenia.
‫Więc zamiast ustawiać obrażenia na pięć, możemy uzyskać obrażenia i wydrukować je, jeśli
‫są jakieś uszkodzenia, więc możemy powiedzieć coś w tym stylu, jeśli ma obrażenia, a następnie przekazujemy zmienną,
‫którą chcemy zapełnić obrażeniami .
‫Na przykład uszkodzenie, a potem możemy mieć treść naszego oświadczenia i możemy tylko nazwać uszkodzenie wydruku, na przykład,
‫jeśli są jakieś uszkodzenia do wyświetlenia i możemy je usunąć, logujemy się całkowicie.
‫W ten sposób używamy referencji bezkontaktowych jako parametrów wyjściowych, sposób na uzyskanie wielu wartości
‫zwracanych z funkcji.
‫I zazwyczaj, kiedy to robimy, kiedy wywołujemy tę funkcję, tworzymy zmienną, ale nie
‫nadajemy jej wartości początkowej.
‫Więc w linii 39, mam zdefiniowane obrażenia typu float.
‫Podaję go od razu w następnym wierszu.
‫I to jest kolejny znak ostrzegawczy, że używasz parametru out.
‫Nie podałem żadnej wartości tuż przed przekazaniem jej do funkcji, oznacza to, że oczekuję, że
‫ta funkcja wprowadzi tę wartość za mnie.
‫Na początku może to być trudne do zauważenia i może być trochę mylące.
‫Ale to są dwie zasady, o których chciałbym abyś pamiętał.
‫Jeśli zobaczysz zadeklarowaną zmienną, której nie podano wartości i która została natychmiast przekazana do funkcji, zadaj sobie pytanie, czy
‫jest to parametr out.
‫Druga reguła to taka, że jeśli widzisz odwołanie jako parametr, ale nie jest ono treścią, może to
‫również wskazywać, że jest to parametr wyjściowy.
‫I oczywiście, jeśli zmienna lub parametr jest nazwana jakoś, to jest to martwa wskazówka, że ta
‫rzecz ma być parametrem out.
‫Świetna sprawa.
‫Myślę, że to bardzo ładnie przygotowało nas do tego, że możemy przeprowadzić zamiatanie.
‫Do zobaczenia na następnym wykładzie.