﻿1
00:00:04,410 --> 00:00:05,370
‫Xin chào và chào mừng.

2
00:00:05,370 --> 00:00:10,350
‫Trong bài giảng này, chúng ta sẽ học về một hiện tượng kỳ lạ được gọi là tham số out.

3
00:00:10,350 --> 00:00:17,460
‫Đây là một tham số mà thay vì truyền giá trị trong C ++, chúng ta có xu hướng chuyển giá trị ra khỏi

4
00:00:17,460 --> 00:00:18,240
‫một hàm.

5
00:00:18,330 --> 00:00:23,430
‫Và chúng ta cũng sẽ xem xét về một thứ gọi là tham chiếu không đổi và làm thế nào

6
00:00:23,430 --> 00:00:25,620
‫hai khái niệm này gắn bó với nhau.

7
00:00:25,650 --> 00:00:27,900
‫Hãy đi sâu vào và tìm ra điều này.

8
00:00:28,850 --> 00:00:29,180
‫Hiện nay.

9
00:00:29,180 --> 00:00:36,980
‫Nơi thực sự tham chiếu đến sự tỏa sáng là trong các tham số cho các hàm, bởi vì mỗi khi chúng tôi tạo thời

10
00:00:36,980 --> 00:00:45,200
‫gian float delta như thế này trong thành phần công nghệ của chúng tôi, những gì chúng tôi đang làm là chúng tôi đang lấy một bản

11
00:00:45,200 --> 00:00:49,580
‫sao của float gốc đó và chúng tôi chuyển nó vào chức năng.

12
00:00:49,580 --> 00:00:56,000
‫Vì vậy, thay vì làm điều đó, những gì chúng ta có thể muốn làm là tham khảo nó và chuyển nó vào thay thế.

13
00:00:56,090 --> 00:01:03,020
‫Vì vậy, hãy tưởng tượng rằng chúng tôi đã tạo ra một chức năng trong trọng lực được gọi là thiệt hại in.

14
00:01:03,020 --> 00:01:09,360
‫Và như là một đối số cho hàm này, chúng tôi muốn chuyển vào một thiệt hại float.

15
00:01:09,380 --> 00:01:14,780
‫Bây giờ, điều này, như tôi đã nói, sẽ tạo một bản sao của bất kỳ thứ gì chúng ta truyền vào và sao chép nó vào biến đó.

16
00:01:14,780 --> 00:01:18,980
‫Tạo biến tham số này bên trong chức năng in hỏng.

17
00:01:19,930 --> 00:01:24,610
‫Và chúng ta cũng cần phải có giá trị trả về là void ở đây để hoàn thành nó trong dấu chấm phẩy ở cuối.

18
00:01:24,640 --> 00:01:28,630
‫Chúng ta hãy đi sâu vào C ++ và tiếp tục cuộc trò chuyện này.

19
00:01:28,630 --> 00:01:31,030
‫Hãy tạo ra thiệt hại in ở đây.

20
00:01:31,300 --> 00:01:39,490
‫Hãy đặt bạn lấy một lớp ở phía trước nó và đặt một số dấu ngoặc nhọn thay vì dấu chấm phẩy.

21
00:01:39,670 --> 00:01:48,340
‫Vì vậy, chúng tôi đã có một bản sao vào biến thông số thiệt hại và nó an toàn vì nếu tôi gây sát thương

22
00:01:48,340 --> 00:01:53,980
‫bằng năm, tôi chỉ thay đổi biến này ở đây trong phạm vi thiệt hại in.

23
00:01:53,980 --> 00:01:55,600
‫Tôi đã có một bản sao của nó cho riêng mình.

24
00:01:55,600 --> 00:01:58,160
‫Tôi không thể làm rối tung nó một cách tình cờ.

25
00:01:58,180 --> 00:02:01,460
‫Bây giờ, nếu tôi không muốn tạo một bản sao thì sao?

26
00:02:01,480 --> 00:02:04,530
‫Thay thế của tôi sẽ là tham khảo.

27
00:02:04,540 --> 00:02:10,840
‫Vì vậy, những gì tôi có thể làm ở đây là tôi có thể đặt một tham chiếu float vào lỗi in

28
00:02:10,840 --> 00:02:14,500
‫và tôi cũng cần cập nhật điều đó trong tệp C ++.

29
00:02:14,650 --> 00:02:20,440
‫Và sau đó tôi có thể có thông báo nhật ký này mà chúng tôi đang sử dụng tham chiếu, chúng ta hãy bắt đầu và

30
00:02:20,440 --> 00:02:22,690
‫gỡ nó xuống và đặt nó vào thiệt hại in.

31
00:02:22,690 --> 00:02:25,360
‫Vì vậy, bây giờ chúng tôi nhận thiệt hại của chúng tôi và chúng tôi đang in nó.

32
00:02:25,360 --> 00:02:33,490
‫Các cửa hàng cập nhật báo cáo nhật ký để nói rằng thiệt hại là điều này, vì vậy thiệt hại này gây ra thiệt hại này và trong thành phần đánh dấu của

33
00:02:33,490 --> 00:02:41,470
‫chúng tôi, những gì chúng tôi có thể làm là chúng tôi có thể gây thiệt hại in và chuyển vào biến thiệt hại của chúng tôi và đặt dấu chấm phẩy ở

34
00:02:41,470 --> 00:02:48,730
‫cuối và chúng tôi có thể loại bỏ tham chiếu thiệt hại của mình bây giờ, bởi vì những gì chúng ta đang diễn ra bây giờ là một phao

35
00:02:48,730 --> 00:02:49,360
‫sát thương.

36
00:02:49,480 --> 00:02:51,040
‫Nó được tạo trong TTIC.

37
00:02:51,070 --> 00:03:00,100
‫Bộ nhớ cho điều này đã được tạo ở đây và đánh dấu và sau đó chúng tôi đi và đưa nó cho chức năng in hỏng này.

38
00:03:00,100 --> 00:03:06,670
‫Nhưng vì tham số là một tham chiếu, chúng tôi không thực sự sao chép thiệt hại này.

39
00:03:06,670 --> 00:03:13,330
‫Thay vào đó, chúng tôi đang lấy địa chỉ của nó và lưu trữ nó trong tham chiếu để khi chúng tôi sử dụng tham

40
00:03:13,330 --> 00:03:18,160
‫chiếu này xuống dòng, chúng tôi thực sự đang truy cập vào phần bộ nhớ ban đầu.

41
00:03:18,160 --> 00:03:21,970
‫Vì vậy, không có bản sao đã xảy ra cho điều này để in thiệt hại.

42
00:03:21,970 --> 00:03:25,270
‫Bây giờ chúng ta hãy kiểm tra xem điều này có thực sự đang làm những gì chúng ta mong đợi hay không.

43
00:03:25,270 --> 00:03:34,060
‫Ví dụ: nếu tôi thay đổi giá trị thiệt hại thành năm, sau đó biên dịch lại và đánh lần chơi, thì hãy xem nhật

44
00:03:34,060 --> 00:03:35,500
‫ký đầu ra đó.

45
00:03:35,500 --> 00:03:38,590
‫Thật vậy, nhận được bản in mà thiệt hại là năm.

46
00:03:38,590 --> 00:03:42,910
‫Nhưng vì chúng tôi có một tài liệu tham khảo, chúng tôi biết rằng chúng tôi có thể cập nhật giá trị đó.

47
00:03:42,910 --> 00:03:49,000
‫Vì vậy, những gì tôi có thể làm là tôi có thể nói trong chức năng này tôi có thể làm, này, thiệt hại phải

48
00:03:49,000 --> 00:03:49,990
‫bằng hai như vậy.

49
00:03:50,230 --> 00:03:55,510
‫Và nếu tôi không cẩn thận, nếu tôi nghĩ rằng tôi đã có bản sao của riêng mình, tôi có thể nghĩ rằng điều đó không sao cả.

50
00:03:55,510 --> 00:04:01,510
‫Nhưng thực ra trong thành phần đánh dấu, những gì chúng tôi đã làm là chúng tôi đã thay đổi biến ban đầu.

51
00:04:01,520 --> 00:04:09,640
‫Vì vậy, nếu tôi đặt một nhật ký mới vào đây để kiểm tra biến số thiệt hại ban đầu đó và chúng tôi đặt một phần trăm F và chuyển thiệt

52
00:04:09,640 --> 00:04:16,420
‫hại vào đây, chúng ta hãy viết mã trực tiếp, biên dịch nó và chúng tôi sẽ chơi và xem nhật ký đầu ra của chúng

53
00:04:16,420 --> 00:04:17,230
‫tôi .

54
00:04:17,230 --> 00:04:22,990
‫Và bạn có thể thấy rằng bây giờ thiệt hại và thiệt hại ban đầu đều đã được sửa đổi.

55
00:04:22,990 --> 00:04:27,490
‫Cả hai đều được đổi thành số hai, điều này không tuyệt vời.

56
00:04:27,490 --> 00:04:33,130
‫Bạn biết đấy, bạn có thể vô tình gây ra rất nhiều thiệt hại, nếu bạn miễn cưỡng chơi chữ, bằng cách thay

57
00:04:33,130 --> 00:04:35,770
‫đổi các biến mà bạn không mong đợi thay đổi.

58
00:04:35,920 --> 00:04:41,380
‫Và đây là một cách sử dụng khác của từ khóa không đổi mà chúng ta đã thấy trong quá khứ.

59
00:04:41,530 --> 00:04:49,690
‫Nếu tôi gắn const trước tham chiếu float của mình, thì điều tôi đang nói ở đây là đây phải là tham

60
00:04:49,690 --> 00:04:52,570
‫chiếu mà bạn không thể thay đổi.

61
00:04:52,570 --> 00:04:56,440
‫Bạn không thể gọi bất kỳ chức năng không liên hệ nào trên đó, bạn không thể thiết lập nó.

62
00:04:56,440 --> 00:05:00,430
‫Bạn không thể thay đổi nội dung của biến này theo bất kỳ cách nào.

63
00:05:00,430 --> 00:05:04,420
‫Bạn chỉ có thể sử dụng nó, bạn chỉ có thể đọc nó, bạn chỉ có thể thấy những gì trong đó.

64
00:05:04,420 --> 00:05:10,570
‫Vì vậy, nếu chúng tôi quay trở lại lấy CPP, chúng tôi cần đảm bảo rằng chúng tôi cũng đặt Const ở

65
00:05:10,570 --> 00:05:17,230
‫đây trong các tham số và chúng tôi có thể tiếp tục biên dịch và bạn thấy chúng tôi gặp lỗi xây dựng và lỗi

66
00:05:17,230 --> 00:05:22,090
‫nói rằng không thể có thiệt hại được gán cho vì đó là một biến không đổi.

67
00:05:22,090 --> 00:05:25,240
‫Vì vậy, điều đó mang lại cho chúng tôi sự bảo vệ mà chúng tôi cần.

68
00:05:25,240 --> 00:05:32,950
‫Vì vậy, nói chung, nếu chúng tôi đang cố gắng chuyển một biến vào, một cách hiệu quả mà chúng tôi không muốn sao

69
00:05:32,950 --> 00:05:38,950
‫chép, thì chúng tôi sẽ luôn, luôn sử dụng từ khóa liên hệ cũng như sử dụng tham

70
00:05:38,950 --> 00:05:43,900
‫chiếu vì điều này ngăn chúng tôi vô tình thay đổi nội dung đó.

71
00:05:44,200 --> 00:05:53,380
‫Tuy nhiên, bây giờ, đôi khi bạn muốn sử dụng nó để thay đổi giá trị đó và những gì chúng tôi có thể có làm ví dụ, chúng tôi có

72
00:05:53,380 --> 00:06:03,190
‫thể có giá trị trả về Boolean và chúng tôi có thể muốn nói rằng có thiệt hại, nhưng chúng tôi cũng có thể, như chúng tôi đã làm trong Bản thiết kế

73
00:06:03,190 --> 00:06:06,610
‫trong quá khứ, muốn có giá trị trả về thứ hai.

74
00:06:06,610 --> 00:06:10,810
‫Vì vậy, chúng tôi có thể nói, làm thế nào chúng tôi có bất kỳ thiệt hại nào và thiệt hại đó là gì?

75
00:06:10,810 --> 00:06:19,240
‫Chà, trong trường hợp này, thực sự hợp lý khi sử dụng một tham chiếu không phải const đơn giản, một tham chiếu float tới.

76
00:06:19,620 --> 00:06:26,640
‫Thiệt hại, và thông thường, chúng tôi thực sự gọi đây là thiệt hại chỉ để làm cho nó thực sự dễ nhận thấy rằng đây là

77
00:06:26,640 --> 00:06:29,330
‫một thông số được gọi là tham số ngoài.

78
00:06:29,340 --> 00:06:31,150
‫Nó không phải là một tham số để chuyển những thứ vào.

79
00:06:31,170 --> 00:06:33,520
‫Đó là một tham số để chuyển mọi thứ ra ngoài.

80
00:06:33,540 --> 00:06:38,400
‫Bây giờ, nó có thể là một chút gì đó kỳ lạ của C ++ và khó có thể phát hiện ra.

81
00:06:38,400 --> 00:06:44,460
‫Nhưng nói chung, nếu bạn thấy bất kỳ tham số nào là tham chiếu nhưng không được đánh dấu

82
00:06:44,460 --> 00:06:50,890
‫là const, thì bạn có thể giả định rằng ai đó định sử dụng tham số đó làm tham số out.

83
00:06:50,910 --> 00:06:52,560
‫Vì vậy, đó là những gì chúng tôi có ở đây.

84
00:06:52,560 --> 00:06:53,820
‫Chúng tôi đã có nó có thiệt hại.

85
00:06:53,820 --> 00:07:01,440
‫Và nếu chúng ta tiếp tục và triển khai điều này trong CPP, thì chúng ta có thể đặt lớp you grabber ở phía

86
00:07:01,440 --> 00:07:05,950
‫trước ở đây và chúng ta có thể đặt dấu ngoặc đơn ở đây.

87
00:07:05,970 --> 00:07:10,680
‫Chúng tôi sẽ bình luận về vấn đề hư hỏng bản in mà nó không hài lòng vì chúng tôi đang cố

88
00:07:10,680 --> 00:07:12,390
‫gắng thiết lập tham chiếu chi phí.

89
00:07:12,720 --> 00:07:19,710
‫Và về cơ bản những gì chúng tôi có thể làm ở đây là chúng tôi có thể viết một số mã, chúng tôi có thể xem liệu chúng tôi có bị hỏng hóc gì

90
00:07:19,710 --> 00:07:22,230
‫không và sau đó chúng tôi sẽ in ra, vâng, được rồi.

91
00:07:22,230 --> 00:07:25,470
‫Thiệt hại ra ngoài bằng năm.

92
00:07:25,470 --> 00:07:29,760
‫Vì vậy, đó là thiệt hại đã được thực hiện và chúng tôi sẽ trở lại.

93
00:07:29,760 --> 00:07:36,570
‫Đúng, bởi vì chúng tôi đã có một số thiệt hại đã được thực hiện và điều này bây giờ chúng tôi có thể sử dụng ở một

94
00:07:36,570 --> 00:07:40,110
‫nơi nào đó như các thành phần đánh dấu để giữ lại thiệt hại.

95
00:07:40,410 --> 00:07:46,080
‫Vì vậy, ở đây thay vì đặt mức sát thương là năm, chúng ta có thể lấy thiệt hại và in nó

96
00:07:46,080 --> 00:07:54,090
‫nếu có một số thiệt hại để chúng ta có thể nói điều gì đó dọc theo những dòng này nếu có thiệt hại và sau đó chúng ta chuyển

97
00:07:54,090 --> 00:07:56,700
‫vào biến mà chúng ta muốn có sát thương.

98
00:07:56,700 --> 00:08:05,040
‫Vì vậy, thiệt hại, ví dụ, và sau đó chúng tôi có thể có phần nội dung của báo cáo và chúng tôi chỉ có thể gọi là thiệt hại

99
00:08:05,040 --> 00:08:11,990
‫in, ví dụ, nếu có bất kỳ thiệt hại nào được hiển thị và chúng tôi có thể xóa toàn bộ nhật ký u này.

100
00:08:12,000 --> 00:08:19,740
‫Vì vậy, đây là cách mà chúng tôi sử dụng tham chiếu không const làm tham số ra, một cách để nhận nhiều giá trị

101
00:08:19,740 --> 00:08:21,420
‫trả về từ một hàm.

102
00:08:21,420 --> 00:08:27,510
‫Và thông thường khi chúng ta làm điều này, khi chúng ta đang gọi hàm này, chúng ta sẽ tạo biến, nhưng chúng ta sẽ không

103
00:08:27,510 --> 00:08:29,820
‫cung cấp cho nó một giá trị ban đầu.

104
00:08:29,820 --> 00:08:37,050
‫Vì vậy, trên dòng 39, về cơ bản tôi đã xác định được thiệt hại phao, tôi vượt qua nó ngay lập tức ở dòng tiếp theo.

105
00:08:37,050 --> 00:08:41,820
‫Và đây là một dấu hiệu khác cho thấy bạn đang sử dụng tham số out.

106
00:08:42,150 --> 00:08:48,450
‫Tôi chưa cung cấp cho nó bất kỳ giá trị nào ngay trước khi tôi chuyển nó vào một hàm nghĩa là tôi

107
00:08:48,450 --> 00:08:51,570
‫đang mong đợi hàm đó đưa giá trị vào cho tôi.

108
00:08:51,570 --> 00:08:55,500
‫Vì vậy, điều này có thể khó phát hiện lúc đầu và nó có thể hơi khó hiểu.

109
00:08:55,500 --> 00:08:58,260
‫Nhưng đây là hai quy tắc mà tôi muốn bạn ghi nhớ.

110
00:08:58,260 --> 00:09:04,380
‫Nếu bạn thấy một biến được khai báo và không được cung cấp giá trị và ngay lập tức được truyền vào một hàm, hãy tự hỏi liệu đó có

111
00:09:04,380 --> 00:09:05,910
‫phải là tham số out hay không.

112
00:09:05,910 --> 00:09:13,170
‫Và quy tắc khác là nếu bạn thấy một tham chiếu là một tham số, nhưng nó không phải là const, thì đó cũng có thể là một

113
00:09:13,200 --> 00:09:15,600
‫gợi ý rằng đây là một tham số out.

114
00:09:15,600 --> 00:09:21,840
‫Và tất nhiên nếu biến hoặc tham số được đặt tên là một thứ gì đó, thì đó là một món quà chết mà thứ

115
00:09:21,840 --> 00:09:24,060
‫này có nghĩa là một tham số out.

116
00:09:24,300 --> 00:09:24,960
‫Công cụ tuyệt vời.

117
00:09:24,960 --> 00:09:28,890
‫Tôi nghĩ điều đó khiến chúng tôi thiết lập rất tốt để có thể quét sạch.

118
00:09:28,890 --> 00:09:30,990
‫Vì vậy, tôi sẽ gặp bạn trong bài giảng tiếp theo.

