﻿1
00:00:04,420 --> 00:00:05,260
‫Merhaba ve hoş geldiniz.

2
00:00:05,260 --> 00:00:10,900
‫Bu derste, saf blueprint fonksiyonlarının C++'daki karşılığı olan kavram fonksiyonlarını

3
00:00:10,900 --> 00:00:12,400
‫inceleyeceğiz.

4
00:00:12,400 --> 00:00:17,950
‫Bu consort anahtar kelimesinin ne olduğunu, nasıl kullandığımızı ve bizi daha güvenli hale getirmek için kodumuzda yapabileceklerimizi

5
00:00:17,950 --> 00:00:20,200
‫nasıl kısıtladığını göreceğiz.

6
00:00:20,200 --> 00:00:22,000
‫İçeri dalalım ve nasıl çalıştığını görelim.

7
00:00:22,850 --> 00:00:29,600
‫Mavi baskıda, bir işlevi saf hale getirebildik ve bu da yürütme pimlerine olan ihtiyacı ortadan kaldırabileceğimiz

8
00:00:29,600 --> 00:00:32,570
‫anlamına geliyordu.

9
00:00:32,600 --> 00:00:38,840
‫Şimdi, C++'da biraz daha güçlü bir şey yapabiliriz, yani bir fonksiyonu sabit hale getirebiliriz.

10
00:00:39,230 --> 00:00:41,540
‫Şimdi, bir fonksiyonu const yapmak ne anlama gelir?

11
00:00:41,570 --> 00:00:50,330
‫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

12
00:00:50,330 --> 00:00:51,950
‫uygulanır.

13
00:00:51,950 --> 00:00:54,500
‫Size bir örnek vereyim.

14
00:00:54,500 --> 00:01:01,220
‫Platform dönüş fonksiyonumuzu ele alacak olursam, bu sınıftaki herhangi bir şeyi değiştirmesi gereken

15
00:01:01,220 --> 00:01:07,790
‫bir fonksiyon değildir ve bunu unutursak gerçekten bir hata olur çünkü bunu çağırmak ve bir if deyiminde

16
00:01:07,790 --> 00:01:14,570
‫kullanmak gerçekten platformun konumunu değiştirirse veya hareket mesafesini veya platform hızını güncellerse

17
00:01:14,570 --> 00:01:16,460
‫garip olurdu.

18
00:01:16,640 --> 00:01:20,540
‫Kendimizi bu konuda dürüst tutmak için bunu dönüştürebiliriz.

19
00:01:20,540 --> 00:01:28,610
‫Bunu yapmanın yolu da fonksiyonun parantezlerinden sonra contact anahtar kelimesini koymaktır.

20
00:01:28,610 --> 00:01:30,920
‫Genellikle burada da bir boşluk bırakırız.

21
00:01:31,220 --> 00:01:38,390
‫Şimdi, C++ dosyasındaki fonksiyonla doğru bir şekilde eşleşmesi için, aslında const anahtar

22
00:01:38,390 --> 00:01:41,700
‫kelimesini de oraya koymamız gerekiyor.

23
00:01:41,720 --> 00:01:46,730
‫Şimdi, dediğim gibi, bu artık sınıfı değiştirecek herhangi bir şey yapmayı bir hata haline getiriyor.

24
00:01:46,730 --> 00:01:53,480
‫Bu nedenle, platformun geri dönmesi durumunda, hareket mesafesi gibi bir sınıf değişkenini değiştirmeye çalışırdım.

25
00:01:53,480 --> 00:01:57,050
‫Hareket mesafesini 200'e ayarlamayı deneyebilirim.

26
00:01:57,320 --> 00:02:01,700
‫Unreal'a gidip derleme düğmesine bastığımızda ne olacağını görelim.

27
00:02:01,700 --> 00:02:02,020
‫Tamam.

28
00:02:02,030 --> 00:02:03,830
‫Şimdi bir hata olduğunu görebilirsiniz.

29
00:02:03,830 --> 00:02:09,230
‫Derleme başarısız olur ve hataya bakarsanız, burada sabit bir işaretçi aracılığıyla

30
00:02:09,230 --> 00:02:15,110
‫erişildiği için bir şeyi değiştirememekle ilgili bir şey söylendiğini görebilirsiniz.

31
00:02:15,110 --> 00:02:17,330
‫Şimdi bu dil için endişelenmeyin.

32
00:02:17,330 --> 00:02:22,490
‫Yorumlaması biraz zor, ancak önemli olan nokta const anahtar kelimesinin orada olması ve bir şeyi

33
00:02:22,490 --> 00:02:25,760
‫değiştiremediğini söylemesi ve bunun çok önemli olması.

34
00:02:25,760 --> 00:02:31,820
‫Ayrıca, const olarak işaretlenmemiş herhangi bir işlevi çağırdıysanız, bu da bir sorundur.

35
00:02:31,820 --> 00:02:38,510
‫Bu nedenle, bir maliyet fonksiyonu olan get actor location'ı çağırmak iyi olsa da hiçbir şeyi değiştirmez, sadece

36
00:02:38,510 --> 00:02:39,410
‫konumu alır.

37
00:02:39,410 --> 00:02:48,140
‫const olarak işaretlenmemiş ve bu nedenle geçerli olmayan set aktör konumunu çağırmak doğru değildir.

38
00:02:48,140 --> 00:02:50,270
‫Sınıfı değiştiriyor olabilir.

39
00:02:50,270 --> 00:02:55,760
‫Bu nedenle, const olarak işaretlenmemiş herhangi bir işlevin bir maliyet işlevi içinden çağrılmasına izin verilmez.

40
00:02:56,090 --> 00:02:58,730
‫Böylece bir sorunun ortaya çıktığını görebilirsiniz.

41
00:02:58,730 --> 00:03:05,900
‫Aslında get distance moved'i should platform return'ümüzün içinden çağıramayız çünkü should platform return const'tır

42
00:03:05,900 --> 00:03:09,620
‫ancak get distance moved bu şekilde işaretlenmemiştir.

43
00:03:09,620 --> 00:03:16,280
‫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

44
00:03:16,280 --> 00:03:22,040
‫bakın, C ++ 'nın sınıfı değiştirmemesi gerektiğini bilmesini sağlamak için const anahtar kelimesini

45
00:03:22,220 --> 00:03:26,120
‫ekleyeceksiniz ve şimdi videoyu duraklatın ve derleyin.

46
00:03:29,320 --> 00:03:29,770
‫Tamam.

47
00:03:29,770 --> 00:03:30,420
‫Tekrar hoş geldiniz.

48
00:03:30,430 --> 00:03:32,830
‫Bu yüzden önce başlık dosyasına gideceğiz.

49
00:03:32,830 --> 00:03:37,120
‫Kapanış parantezlerinden sonra bir boşluk kavramı ekleyeceğiz ve ardından C++ dosyasına

50
00:03:37,120 --> 00:03:38,530
‫geri döneceğiz.

51
00:03:38,530 --> 00:03:42,670
‫Ve mesafe parantez içine alındıktan sonra, uzay kavramını koyacağız.

52
00:03:42,670 --> 00:03:47,680
‫Şimdi, taşınan mesafenin altındaki dalgalı çizgiler biraz zaman içinde güncellenmelidir.

53
00:03:47,680 --> 00:03:53,290
‫Ancak Unreal'a gidip derleme düğmesine basarsak, derleyicinin yaptığımız şeyi beğenip beğenmediği

54
00:03:53,290 --> 00:03:55,780
‫konusunda nihai hakem olacaktır.

55
00:03:55,780 --> 00:04:02,260
‫Ve bu kez derleme başarıyla sonuçlandı, bu da kodumuzu doğru bir şekilde güncellediğimiz anlamına

56
00:04:02,260 --> 00:04:03,100
‫geliyor.

57
00:04:03,100 --> 00:04:08,860
‫Ve bu mantıklıdır çünkü kavram olmayan, herhangi bir şeyi değiştirmeye çalışmayan get distance move'dan

58
00:04:08,860 --> 00:04:10,780
‫çağrılan hiçbir şey yoktur.

59
00:04:10,780 --> 00:04:18,250
‫Ve platformun geri dönmesi gereken bir fonksiyonu çağırdığımız yerlerde, yalnızca const fonksiyonları kullanıyoruz ve bu,

60
00:04:18,250 --> 00:04:26,230
‫kodumuzun güvenliğini artırmamızın bir yoludur çünkü fonksiyonlar bizim haberimiz olmadan bir şeyleri değiştirmeyecektir.

61
00:04:26,230 --> 00:04:30,790
‫Şimdi kendinize küçük bir alıştırma olarak, şu ana kadar kullandığımız tüm fonksiyonları gözden geçirmek ve

62
00:04:30,790 --> 00:04:35,380
‫hangilerinin sabit olarak işaretlendiğini, hangilerinin işaretlenmediğini görmek isteyebilirsiniz.

63
00:04:35,410 --> 00:04:41,890
‫Bunu sadece get actor location gibi bir fonksiyonun üzerine gelerek ve parantezlerden sonra açılan

64
00:04:41,890 --> 00:04:46,240
‫pencerede iletişim olup olmadığına bakarak yapabilirsiniz.

65
00:04:46,240 --> 00:04:53,050
‫Get active location ile görebilirsiniz, üzerine geldiğinizde bana const verir get name üzerine geldiğinizde de bana bunun const

66
00:04:53,050 --> 00:04:55,360
‫olduğunu ve mantıklı olduğunu verir.

67
00:04:55,360 --> 00:04:59,560
‫Bu ikisi de sınıfımızın durumunu değiştirmemeli.

68
00:04:59,770 --> 00:05:05,110
‫Şimdi tick'in üzerine gelirsem, bunun const olarak işaretlenmediğini görebilirsiniz ve bu mantıklıdır çünkü

69
00:05:05,110 --> 00:05:11,350
‫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.

70
00:05:11,500 --> 00:05:13,360
‫Ve vektörümüzü bulduk.

71
00:05:13,360 --> 00:05:18,880
‫Get safe, normal'in üzerine gelirsek, const olarak işaretlendiğini görebilirsiniz, çünkü get

72
00:05:18,880 --> 00:05:24,790
‫safe normal aslında vektörü değiştirmez, sadece içinde yeni bir vektör olan bir değer döndürür.

73
00:05:24,790 --> 00:05:25,510
‫İşte bu kadar.

74
00:05:25,510 --> 00:05:32,620
‫Bu derste kodumuzun güvenliğini artırmak için fonksiyonlarımıza const eklemeyi öğrendik.

75
00:05:32,620 --> 00:05:34,060
‫Bir sonrakinde görüşürüz.

