‫Merhaba ve hoş geldiniz.
‫Bu derste, saf blueprint fonksiyonlarının C++'daki karşılığı olan kavram fonksiyonlarını
‫inceleyeceğiz.
‫Bu consort anahtar kelimesinin ne olduğunu, nasıl kullandığımızı ve bizi daha güvenli hale getirmek için kodumuzda yapabileceklerimizi
‫nasıl kısıtladığını göreceğiz.
‫İçeri dalalım ve nasıl çalıştığını görelim.
‫Mavi baskıda, bir işlevi saf hale getirebildik ve bu da yürütme pimlerine olan ihtiyacı ortadan kaldırabileceğimiz
‫anlamına geliyordu.
‫Şimdi, C++'da biraz daha güçlü bir şey yapabiliriz, yani bir fonksiyonu sabit hale getirebiliriz.
‫Şimdi, bir fonksiyonu const yapmak ne anlama gelir?
‫Bu, söz konusu işlevin sınıfınızın durumunu değiştiremeyeceği anlamına gelir ve aslında derleyicinin kuralları tarafından
‫uygulanır.
‫Size bir örnek vereyim.
‫Platform dönüş fonksiyonumuzu ele alacak olursam, bu sınıftaki herhangi bir şeyi değiştirmesi gereken
‫bir fonksiyon değildir ve bunu unutursak gerçekten bir hata olur çünkü bunu çağırmak ve bir if deyiminde
‫kullanmak gerçekten platformun konumunu değiştirirse veya hareket mesafesini veya platform hızını güncellerse
‫garip olurdu.
‫Kendimizi bu konuda dürüst tutmak için bunu dönüştürebiliriz.
‫Bunu yapmanın yolu da fonksiyonun parantezlerinden sonra contact anahtar kelimesini koymaktır.
‫Genellikle burada da bir boşluk bırakırız.
‫Şimdi, C++ dosyasındaki fonksiyonla doğru bir şekilde eşleşmesi için, aslında const anahtar
‫kelimesini de oraya koymamız gerekiyor.
‫Şimdi, dediğim gibi, bu artık sınıfı değiştirecek herhangi bir şey yapmayı bir hata haline getiriyor.
‫Bu nedenle, platformun geri dönmesi durumunda, hareket mesafesi gibi bir sınıf değişkenini değiştirmeye çalışırdım.
‫Hareket mesafesini 200'e ayarlamayı deneyebilirim.
‫Unreal'a gidip derleme düğmesine bastığımızda ne olacağını görelim.
‫Tamam.
‫Şimdi bir hata olduğunu görebilirsiniz.
‫Derleme başarısız olur ve hataya bakarsanız, burada sabit bir işaretçi aracılığıyla
‫erişildiği için bir şeyi değiştirememekle ilgili bir şey söylendiğini görebilirsiniz.
‫Şimdi bu dil için endişelenmeyin.
‫Yorumlaması biraz zor, ancak önemli olan nokta const anahtar kelimesinin orada olması ve bir şeyi
‫değiştiremediğini söylemesi ve bunun çok önemli olması.
‫Ayrıca, const olarak işaretlenmemiş herhangi bir işlevi çağırdıysanız, bu da bir sorundur.
‫Bu nedenle, bir maliyet fonksiyonu olan get actor location'ı çağırmak iyi olsa da hiçbir şeyi değiştirmez, sadece
‫konumu alır.
‫const olarak işaretlenmemiş ve bu nedenle geçerli olmayan set aktör konumunu çağırmak doğru değildir.
‫Sınıfı değiştiriyor olabilir.
‫Bu nedenle, const olarak işaretlenmemiş herhangi bir işlevin bir maliyet işlevi içinden çağrılmasına izin verilmez.
‫Böylece bir sorunun ortaya çıktığını görebilirsiniz.
‫Aslında get distance moved'i should platform return'ümüzün içinden çağıramayız çünkü should platform return const'tır
‫ancak get distance moved bu şekilde işaretlenmemiştir.
‫Bu nedenle, taşınan mesafeyi almak için hızlı bir ücret const get distance move cost yapın, böylece başlıkta ve p dosyasına
‫bakın, C ++ 'nın sınıfı değiştirmemesi gerektiğini bilmesini sağlamak için const anahtar kelimesini
‫ekleyeceksiniz ve şimdi videoyu duraklatın ve derleyin.
‫Tamam.
‫Tekrar hoş geldiniz.
‫Bu yüzden önce başlık dosyasına gideceğiz.
‫Kapanış parantezlerinden sonra bir boşluk kavramı ekleyeceğiz ve ardından C++ dosyasına
‫geri döneceğiz.
‫Ve mesafe parantez içine alındıktan sonra, uzay kavramını koyacağız.
‫Şimdi, taşınan mesafenin altındaki dalgalı çizgiler biraz zaman içinde güncellenmelidir.
‫Ancak Unreal'a gidip derleme düğmesine basarsak, derleyicinin yaptığımız şeyi beğenip beğenmediği
‫konusunda nihai hakem olacaktır.
‫Ve bu kez derleme başarıyla sonuçlandı, bu da kodumuzu doğru bir şekilde güncellediğimiz anlamına
‫geliyor.
‫Ve bu mantıklıdır çünkü kavram olmayan, herhangi bir şeyi değiştirmeye çalışmayan get distance move'dan
‫çağrılan hiçbir şey yoktur.
‫Ve platformun geri dönmesi gereken bir fonksiyonu çağırdığımız yerlerde, yalnızca const fonksiyonları kullanıyoruz ve bu,
‫kodumuzun güvenliğini artırmamızın bir yoludur çünkü fonksiyonlar bizim haberimiz olmadan bir şeyleri değiştirmeyecektir.
‫Şimdi kendinize küçük bir alıştırma olarak, şu ana kadar kullandığımız tüm fonksiyonları gözden geçirmek ve
‫hangilerinin sabit olarak işaretlendiğini, hangilerinin işaretlenmediğini görmek isteyebilirsiniz.
‫Bunu sadece get actor location gibi bir fonksiyonun üzerine gelerek ve parantezlerden sonra açılan
‫pencerede iletişim olup olmadığına bakarak yapabilirsiniz.
‫Get active location ile görebilirsiniz, üzerine geldiğinizde bana const verir get name üzerine geldiğinizde de bana bunun const
‫olduğunu ve mantıklı olduğunu verir.
‫Bu ikisi de sınıfımızın durumunu değiştirmemeli.
‫Şimdi tick'in üzerine gelirsem, bunun const olarak işaretlenmediğini görebilirsiniz ve bu mantıklıdır çünkü
‫Tick genellikle bir sınıfın dünyada nasıl konumlandırıldığını veya sınıfın herhangi bir durumunu güncellemek için kullanılır.
‫Ve vektörümüzü bulduk.
‫Get safe, normal'in üzerine gelirsek, const olarak işaretlendiğini görebilirsiniz, çünkü get
‫safe normal aslında vektörü değiştirmez, sadece içinde yeni bir vektör olan bir değer döndürür.
‫İşte bu kadar.
‫Bu derste kodumuzun güvenliğini artırmak için fonksiyonlarımıza const eklemeyi öğrendik.
‫Bir sonrakinde görüşürüz.