﻿1
00:00:04,410 --> 00:00:05,370
‫Merhaba ve hoş geldiniz.

2
00:00:05,370 --> 00:00:10,350
‫Bu derste, dış parametre adı verilen garip bir fenomeni öğreneceğiz.

3
00:00:10,350 --> 00:00:18,240
‫Bu, C++'da değeri içeri aktarmak yerine, değeri bir fonksiyondan dışarı aktarma eğiliminde olduğumuz bir parametredir.

4
00:00:18,330 --> 00:00:23,430
‫Ayrıca sabit referans denilen bir şeyi ve bu iki kavramın birbiriyle nasıl

5
00:00:23,430 --> 00:00:25,620
‫iç içe geçtiğini de göreceğiz.

6
00:00:25,650 --> 00:00:27,900
‫Hadi içeri dalalım ve bunu çözelim.

7
00:00:28,850 --> 00:00:29,180
‫Şimdi.

8
00:00:29,180 --> 00:00:36,980
‫Referansların parladığı asıl yer, fonksiyonların parametreleridir, çünkü teknoloji bileşenimizde

9
00:00:36,980 --> 00:00:45,200
‫bunun gibi bir kayan delta zamanı oluşturduğumuzda, yaptığımız şey orijinal kayan değerin bir kopyasını

10
00:00:45,200 --> 00:00:49,580
‫almak ve bunu fonksiyona aktarmaktır.

11
00:00:49,580 --> 00:00:56,000
‫Bu nedenle, bunu yapmak yerine, ona bir referans almak ve bunu içeri aktarmak isteyebiliriz.

12
00:00:56,090 --> 00:01:03,020
‫Şimdi yerçekiminde print damage adında bir fonksiyon oluşturduğumuzu düşünelim.

13
00:01:03,020 --> 00:01:09,360
‫Ve bu fonksiyona argüman olarak bir float hasarı iletmek istiyoruz.

14
00:01:09,380 --> 00:01:14,780
‫Şimdi, bu, dediğim gibi, içeri aktardığımız her şeyin bir kopyasını oluşturacak ve onu bu değişkene kopyalayacaktır.

15
00:01:14,780 --> 00:01:18,980
‫Bu parametre değişkenini print damage fonksiyonu içinde oluşturun.

16
00:01:19,930 --> 00:01:24,610
‫Ve sonunda noktalı virgülle tamamlamak için burada da bir void dönüş değerine ihtiyacımız var.

17
00:01:24,640 --> 00:01:28,630
‫C++'ya geçelim ve bu konuşmaya devam edelim.

18
00:01:28,630 --> 00:01:31,030
‫Baskı hasarını burada oluşturalım.

19
00:01:31,300 --> 00:01:39,490
‫Önüne you grab a class koyalım ve noktalı virgül yerine parantez koyalım.

20
00:01:39,670 --> 00:01:48,340
‫Böylece hasar parametresi değişkenine bir kopyasını aldık ve bu güvenli çünkü hasar eşittir beş yaparsam,

21
00:01:48,340 --> 00:01:53,980
‫bu değişkeni yalnızca hasarı yazdırma içinde değiştiriyorum.

22
00:01:53,980 --> 00:01:55,600
‫Kendime ait bir kopyası var.

23
00:01:55,600 --> 00:01:58,160
‫Kazara berbat edemem.

24
00:01:58,180 --> 00:02:01,460
‫Peki ya bir kopyasını almak istemezsem?

25
00:02:01,480 --> 00:02:04,530
‫Benim alternatifim bir referans almak olurdu.

26
00:02:04,540 --> 00:02:10,840
‫Burada yapabileceğim şey, baskı hasarına giden bir float referansı koyabilirim

27
00:02:10,840 --> 00:02:14,500
‫ve bunu C++ dosyasında da güncellemem gerekir.

28
00:02:14,650 --> 00:02:20,440
‫Ve sonra referans olarak kullandığımız bu günlük mesajına sahip olabilirim, hadi gidip bunu indirelim

29
00:02:20,440 --> 00:02:22,690
‫ve bunu yazdırma hasarına koyalım.

30
00:02:22,690 --> 00:02:25,360
‫Şimdi hasarımızı alıyoruz ve basıyoruz.

31
00:02:25,360 --> 00:02:33,490
‫Çıkışlar, hasar şu kadar, hasar bu kadar demek için günlük ifadesini günceller ve tik bileşenimizde yapabileceğimiz

32
00:02:33,490 --> 00:02:41,470
‫şey hasarı yazdırmak ve hasar değişkenimizi geçmek ve sonuna noktalı virgül koymaktır ve şimdilik hasar

33
00:02:41,470 --> 00:02:49,360
‫referansımızdan kurtulabiliriz, çünkü şu anda devam eden şey bir hasar float'ıdır.

34
00:02:49,480 --> 00:02:51,040
‫TTIC'de oluşturulmuştur.

35
00:02:51,070 --> 00:03:00,100
‫Bunun için bellek burada oluşturuldu ve işaretlendi ve sonra gidip bu baskı hasarı işlevine veriyoruz.

36
00:03:00,100 --> 00:03:06,670
‫Ancak parametre bir referans olduğu için, aslında bu hasarı kopyalamıyoruz.

37
00:03:06,670 --> 00:03:13,330
‫Adresini alıyoruz ve bunun yerine referansta saklıyoruz, böylece bu referansı ileride kullandığımızda,

38
00:03:13,330 --> 00:03:18,160
‫aslında orijinal bellek parçasına erişiyoruz.

39
00:03:18,160 --> 00:03:21,970
‫Yani bunun hasarı yazdırması için hiçbir kopyanın olması gerekmedi.

40
00:03:21,970 --> 00:03:25,270
‫Şimdi bunun gerçekten yapmasını beklediğimiz şeyi yapıp yapmadığını kontrol edelim.

41
00:03:25,270 --> 00:03:34,060
‫Örneğin hasar değerini beş olarak değiştirirsem ve ardından yeniden derleyip oynat düğmesine basarsam, o zaman gidip çıktı günlüğüne

42
00:03:34,060 --> 00:03:35,500
‫bir göz atın.

43
00:03:35,500 --> 00:03:38,590
‫Gerçekten de, hasarın beş olduğuna dair bir baskı alın.

44
00:03:38,590 --> 00:03:42,910
‫Ancak elimizde bir referans olduğu için bu değeri güncelleyebileceğimizi biliyoruz.

45
00:03:42,910 --> 00:03:49,000
‫Yani yapabileceğim şey, bu fonksiyon içinde diyebilirim ki, hey, hasar bu şekilde ikiye eşit

46
00:03:49,000 --> 00:03:49,990
‫olmalıdır.

47
00:03:50,230 --> 00:03:55,510
‫Ve eğer dikkatli olmazsam, kendi kopyama sahip olduğumu düşünürsem, bunun sorun olmadığını düşünebilirim.

48
00:03:55,510 --> 00:04:01,510
‫Ancak aslında tik bileşeninde yaptığımız şey orijinal değişkeni değiştirmektir.

49
00:04:01,520 --> 00:04:09,640
‫Dolayısıyla, orijinal hasar değişkenini incelemek için buraya yeni bir günlük koyarsam ve bir yüzde F koyup hasarı buraya

50
00:04:09,640 --> 00:04:16,420
‫aktarırsak, canlı kodlama yapalım, bunu derleyelim ve oynat düğmesine basıp çıktı günlüğümüze bir göz

51
00:04:16,420 --> 00:04:17,230
‫atalım.

52
00:04:17,230 --> 00:04:22,990
‫Ve şimdi hasarın ve orijinal hasarın her ikisinin de değiştirildiğini görebilirsiniz.

53
00:04:22,990 --> 00:04:27,490
‫İkisi de iki numara olarak değiştirildi ki bu hiç de iyi değil.

54
00:04:27,490 --> 00:04:33,130
‫Kelime oyununu mazur görürseniz, değiştirmeyi beklemediğiniz değişkenleri değiştirerek yanlışlıkla

55
00:04:33,130 --> 00:04:35,770
‫çok fazla zarar verebilirsiniz.

56
00:04:35,920 --> 00:04:41,380
‫Ve işte geçmişte gördüğümüz o sabit anahtar kelimenin başka bir kullanımı geliyor.

57
00:04:41,530 --> 00:04:49,690
‫Float referansımın önüne const yapıştırırsam, burada söylediğim şey, bunun değiştiremeyeceğiniz

58
00:04:49,690 --> 00:04:52,570
‫bir referans olması gerektiğidir.

59
00:04:52,570 --> 00:04:56,440
‫Üzerinde herhangi bir temassız işlev çağıramazsınız, ayarlayamazsınız.

60
00:04:56,440 --> 00:05:00,430
‫Bu değişkenin içeriğini hiçbir şekilde değiştiremezsiniz.

61
00:05:00,430 --> 00:05:04,420
‫Sadece kullanabilir, sadece okuyabilir, sadece içinde ne olduğunu görebilirsiniz.

62
00:05:04,420 --> 00:05:10,570
‫Dolayısıyla, CPP'ye geri dönersek, Const'u da parametrelere koyduğumuzdan emin olmamız

63
00:05:10,570 --> 00:05:17,230
‫gerekir ve devam edip derleyebiliriz ve bir derleme hatası aldığımızı ve hatanın hasarın sabit bir

64
00:05:17,230 --> 00:05:22,090
‫değişken olduğu için atanamayacağını söylediğini görürsünüz.

65
00:05:22,090 --> 00:05:25,240
‫Bu da bize ihtiyacımız olan korumayı sağlıyor.

66
00:05:25,240 --> 00:05:32,950
‫Genel olarak konuşursak, bir değişkeni kopyasını almak istemediğimiz verimli bir şekilde aktarmaya çalışıyorsak,

67
00:05:32,950 --> 00:05:38,950
‫her zaman, her zaman bir referans kullanmanın yanı sıra iletişim anahtar kelimesini de kullanacağız

68
00:05:38,950 --> 00:05:43,900
‫çünkü bu, içeriği yanlışlıkla değiştirmemizi önler.

69
00:05:44,200 --> 00:05:53,380
‫Bununla birlikte, bazen bu değeri değiştirmek için kullanmak isteyebilirsiniz ve örnek olarak, bir Boolean dönüş

70
00:05:53,380 --> 00:06:03,190
‫değerimiz olabilir ve hasar var demek isteyebiliriz, ancak geçmişte Blueprint'te yaptığımız gibi, ikinci bir dönüş değerine

71
00:06:03,190 --> 00:06:06,610
‫sahip olmak isteyebiliriz.

72
00:06:06,610 --> 00:06:10,810
‫O zaman şöyle diyebiliriz: Nasıl bir zararımız var ve bu zarar nedir?

73
00:06:10,810 --> 00:06:19,240
‫Bu durumda, aslında const olmayan basit bir referans, bir float referansı kullanmak mantıklıdır.

74
00:06:19,620 --> 00:06:26,640
‫Hasar ve tipik olarak, bunun bir çıkış parametresi olarak bilinen bir şey olduğunu gerçekten görünür kılmak

75
00:06:26,640 --> 00:06:29,330
‫için aslında buna çıkış hasarı deriz.

76
00:06:29,340 --> 00:06:31,150
‫Bir şeyleri geçirmek için bir parametre değildir.

77
00:06:31,170 --> 00:06:33,520
‫Bir şeyleri dışarı aktarmak için bir parametredir.

78
00:06:33,540 --> 00:06:38,400
‫Şimdi, bu biraz C++'ın tuhaf bir cilvesi olabilir ve fark edilmesi zor olabilir.

79
00:06:38,400 --> 00:06:44,460
‫Ancak genel olarak konuşmak gerekirse, referans olan ancak const olarak işaretlenmemiş herhangi bir parametre

80
00:06:44,460 --> 00:06:50,890
‫görürseniz, birisinin bunu bir çıkış parametresi olarak kullanmayı amaçladığını varsayabilirsiniz.

81
00:06:50,910 --> 00:06:52,560
‫İşte elimizdeki şey bu.

82
00:06:52,560 --> 00:06:53,820
‫Hasar var.

83
00:06:53,820 --> 00:07:01,440
‫Ve eğer bunu CPP'de uygulayacak olursak, o zaman you grabber sınıfını buraya koyabiliriz

84
00:07:01,440 --> 00:07:05,950
‫ve parantezlerimizi buraya koyabiliriz.

85
00:07:05,970 --> 00:07:10,680
‫Bir maliyet referansı belirlemeye çalıştığımız için baskı hasarındaki mutlu olmadığı

86
00:07:10,680 --> 00:07:12,390
‫satırı yorumlayacağız.

87
00:07:12,720 --> 00:07:19,710
‫Esasen burada yapabileceğimiz şey biraz kod yazmak, hasar olup olmadığını görmek ve ardından

88
00:07:19,710 --> 00:07:22,230
‫evet, tamam çıktısını almaktır.

89
00:07:22,230 --> 00:07:25,470
‫Dış hasar eşittir beş.

90
00:07:25,470 --> 00:07:29,760
‫Yani verilen zarar bu ve geri döneceğiz.

91
00:07:29,760 --> 00:07:36,570
‫Doğru, çünkü elimizde bir miktar hasar var ve bunu artık hasarı ele geçirmek için kene bileşenleri

92
00:07:36,570 --> 00:07:40,110
‫gibi bir yerde kullanabiliriz.

93
00:07:40,410 --> 00:07:46,080
‫Yani burada hasarı beş olarak ayarlamak yerine, hasarı alabilir ve hasar varsa yazdırabiliriz,

94
00:07:46,080 --> 00:07:54,090
‫bu nedenle bu satırlara benzer bir şey söyleyebiliriz if hasarı varsa ve ardından hasarla doldurulmasını istediğimiz

95
00:07:54,090 --> 00:07:56,700
‫değişkeni iletiriz.

96
00:07:56,700 --> 00:08:05,040
‫Yani örneğin hasar ve sonra deyimimizin gövdesine sahip olabiliriz ve örneğin yalnızca görüntülenecek herhangi

97
00:08:05,040 --> 00:08:11,990
‫bir hasar varsa hasarı yazdır diyebiliriz ve bu u günlüğünü tamamen kaldırabiliriz.

98
00:08:12,000 --> 00:08:19,740
‫Bu, bir fonksiyondan birden fazla dönüş değeri elde etmenin bir yolu olan, const olmayan referansları çıkış parametreleri olarak

99
00:08:19,740 --> 00:08:21,420
‫kullanmanın yoludur.

100
00:08:21,420 --> 00:08:27,510
‫Ve tipik olarak bunu yaptığımızda, bu fonksiyonu çağırdığımızda, değişkeni yaratırız, ancak

101
00:08:27,510 --> 00:08:29,820
‫ona bir başlangıç değeri vermeyiz.

102
00:08:29,820 --> 00:08:37,050
‫Yani 39. satırda, temel olarak tanımlanmış bir float hasarım var, bunu hemen bir sonraki satıra aktarıyorum.

103
00:08:37,050 --> 00:08:41,820
‫Bu da bir çıkış parametresi kullandığınızı gösteren başka bir işarettir.

104
00:08:42,150 --> 00:08:48,450
‫Bir fonksiyona aktarmadan hemen önce ona herhangi bir değer vermemiş olmam, o fonksiyonun benim için

105
00:08:48,450 --> 00:08:51,570
‫değeri koymasını beklediğim anlamına gelir.

106
00:08:51,570 --> 00:08:55,500
‫Bu yüzden ilk başta bunu fark etmek zor olabilir ve biraz kafa karıştırıcı olabilir.

107
00:08:55,500 --> 00:08:58,260
‫Ancak hatırlamanızı istediğim iki kural şunlar.

108
00:08:58,260 --> 00:09:04,380
‫Bildirilmiş ve bir değer verilmemiş ve anında bir fonksiyona geçirilen bir değişken görürseniz, bunun bir dış parametre olup

109
00:09:04,380 --> 00:09:05,910
‫olmadığını kendinize sorun.

110
00:09:05,910 --> 00:09:13,170
‫Diğer kural ise, parametre olarak bir referans görüyorsanız, ancak bu referans const değilse, bu da bunun bir out parametresi

111
00:09:13,200 --> 00:09:15,600
‫olduğuna dair bir ipucu olabilir.

112
00:09:15,600 --> 00:09:21,840
‫Ve tabii ki eğer değişken ya da parametre out olarak adlandırılmışsa, bu o şeyin bir out parametresi olması

113
00:09:21,840 --> 00:09:24,060
‫gerektiğinin göstergesidir.

114
00:09:24,300 --> 00:09:24,960
‫Harika bir şey.

115
00:09:24,960 --> 00:09:28,890
‫Bence bu bizi bir tarama yapabilmek için çok güzel bir şekilde hazırladı.

116
00:09:28,890 --> 00:09:30,990
‫Bir sonraki derste görüşmek üzere.

