﻿1
00:00:04,420 --> 00:00:05,260
‫Xin chào và chào mừng.

2
00:00:05,260 --> 00:00:10,900
‫Trong bài giảng này, chúng ta sẽ xem xét tương đương C ++ của các hàm bản thiết kế thuần túy, đó

3
00:00:10,900 --> 00:00:12,400
‫là các hàm khái niệm.

4
00:00:12,400 --> 00:00:17,950
‫Chúng ta sẽ xem từ khóa kết hợp này là gì, cách chúng ta sử dụng nó và cách nó hạn chế những gì chúng ta có thể làm

5
00:00:17,950 --> 00:00:20,200
‫trong mã của mình để giúp chúng ta an toàn hơn.

6
00:00:20,200 --> 00:00:22,000
‫Hãy đi sâu vào và xem nó hoạt động như thế nào.

7
00:00:22,850 --> 00:00:29,600
‫Với bản in màu xanh lam, chúng tôi đã có thể tạo ra một hàm thuần túy và điều đó có nghĩa là chúng tôi

8
00:00:29,600 --> 00:00:32,570
‫có thể loại bỏ nhu cầu về các chân thực thi.

9
00:00:32,600 --> 00:00:38,840
‫Bây giờ, trong C ++, chúng ta có thể làm điều gì đó mạnh mẽ hơn một chút, đó là làm cho một hàm không đổi.

10
00:00:39,230 --> 00:00:41,540
‫Bây giờ, nó có nghĩa là gì khi tạo một hàm const?

11
00:00:41,570 --> 00:00:50,330
‫Nó có nghĩa là hàm đó không thể sửa đổi trạng thái của lớp của bạn, và nó thực sự được thực thi bởi các quy tắc

12
00:00:50,330 --> 00:00:51,950
‫của trình biên dịch.

13
00:00:51,950 --> 00:00:54,500
‫Vì vậy, hãy để tôi cho bạn một ví dụ.

14
00:00:54,500 --> 00:01:01,220
‫Nếu tôi sử dụng hàm trả về nền tảng nên của chúng tôi, đây không phải là hàm có thể sửa đổi bất kỳ thứ

15
00:01:01,220 --> 00:01:07,790
‫gì trong lớp và sẽ là một lỗi thực sự nếu chúng tôi quên điều đó vì sẽ rất kỳ lạ nếu gọi hàm

16
00:01:07,790 --> 00:01:14,570
‫này và sử dụng trong câu lệnh if thực sự thay đổi vị trí của nền tảng hoặc nếu nó đã cập nhật khoảng cách di

17
00:01:14,570 --> 00:01:16,460
‫chuyển hoặc tốc độ nền tảng.

18
00:01:16,640 --> 00:01:20,540
‫Vì vậy, để giữ cho mình trung thực với điều đó, chúng ta có thể làm cho nó chuyển đổi.

19
00:01:20,540 --> 00:01:28,610
‫Và cách chúng ta làm điều này là đặt từ khóa contact sau dấu ngoặc đơn của hàm.

20
00:01:28,610 --> 00:01:30,920
‫Chúng tôi cũng thường để lại một khoảng trống ở đây.

21
00:01:31,220 --> 00:01:38,390
‫Bây giờ, để nó khớp chính xác với hàm trong tệp C ++, chúng ta thực sự phải

22
00:01:38,390 --> 00:01:41,700
‫đặt từ khóa const đó ở đó.

23
00:01:41,720 --> 00:01:46,730
‫Bây giờ, như tôi đã nói, điều này bây giờ khiến việc thực hiện bất kỳ điều gì có thể sửa đổi lớp là một lỗi.

24
00:01:46,730 --> 00:01:53,480
‫Vì vậy, nếu nền tảng nên trả lại, tôi đã thử và sửa đổi một biến lớp chẳng hạn như khoảng cách di chuyển.

25
00:01:53,480 --> 00:01:57,050
‫Tôi có thể thử và đặt khoảng cách di chuyển thành 200.

26
00:01:57,320 --> 00:02:01,700
‫Hãy xem điều gì sẽ xảy ra khi chúng ta chuyển sang phần không thực và nhấn nút biên dịch.

27
00:02:01,700 --> 00:02:02,020
‫Được chứ.

28
00:02:02,030 --> 00:02:03,830
‫Bạn có thể thấy rằng hiện có một lỗi.

29
00:02:03,830 --> 00:02:09,230
‫Nó không xây dựng được và nếu bạn nhìn vào lỗi, bạn có thể thấy rằng có điều gì đó đang được

30
00:02:09,230 --> 00:02:15,110
‫nói ở đây về việc không thể sửa đổi một cái gì đó vì nó được truy cập thông qua một con trỏ không đổi.

31
00:02:15,110 --> 00:02:17,330
‫Bây giờ đừng lo lắng về ngôn ngữ đó.

32
00:02:17,330 --> 00:02:22,490
‫Nó hơi khó để diễn giải, nhưng vấn đề là từ khóa const đã ở đó và nó nói rằng nó không

33
00:02:22,490 --> 00:02:25,760
‫thể sửa đổi một cái gì đó và điều đó rất quan trọng.

34
00:02:25,760 --> 00:02:31,820
‫Ngoài ra, nếu bạn gọi bất kỳ hàm nào không được đánh dấu là const, đó cũng là một vấn đề.

35
00:02:31,820 --> 00:02:38,510
‫Vì vậy, trong khi gọi get vị trí diễn viên là một hàm chi phí không thay đổi bất cứ điều gì chỉ

36
00:02:38,510 --> 00:02:39,410
‫lấy vị trí.

37
00:02:39,410 --> 00:02:48,140
‫Không được phép gọi vị trí diễn viên đã đặt chưa được đánh dấu là const và do đó, nó không hợp lệ.

38
00:02:48,140 --> 00:02:50,270
‫Nó có thể đang sửa đổi lớp.

39
00:02:50,270 --> 00:02:55,760
‫Vì vậy, bất kỳ hàm nào không được đánh dấu là const đều không được phép gọi từ bên trong một hàm chi phí.

40
00:02:56,090 --> 00:02:58,730
‫Và vì vậy bạn có thể thấy một vấn đề đang nổi lên.

41
00:02:58,730 --> 00:03:05,900
‫Chúng tôi thực sự không thể gọi get khoảng cách di chuyển từ bên trong nên trả về nền tảng của chúng tôi vì nên trả lại nền tảng

42
00:03:05,900 --> 00:03:09,620
‫là const nhưng nhận khoảng cách đã di chuyển không được đánh dấu như vậy.

43
00:03:09,620 --> 00:03:16,280
‫Vì vậy, một khoản phí nhanh chóng để bạn có được khoảng cách đã di chuyển const làm cho chi phí di chuyển khoảng cách vì vậy trong

44
00:03:16,280 --> 00:03:22,040
‫tiêu đề và xem tệp p, bạn sẽ thêm từ khóa const đó để cho C ++ biết rằng nó không nên sửa đổi

45
00:03:22,220 --> 00:03:26,120
‫lớp và nó có biên dịch ngay bây giờ không tạm dừng video và bắt đầu.

46
00:03:29,320 --> 00:03:29,770
‫Được chứ.

47
00:03:29,770 --> 00:03:30,420
‫Chào mừng trở lại.

48
00:03:30,430 --> 00:03:32,830
‫Vì vậy, trước tiên chúng ta sẽ chuyển sang tệp tiêu đề.

49
00:03:32,830 --> 00:03:37,120
‫Và sau dấu ngoặc đóng, chúng ta sẽ thêm một khái niệm khoảng trắng và sau đó chúng ta

50
00:03:37,120 --> 00:03:38,530
‫sẽ quay lại tệp C ++.

51
00:03:38,530 --> 00:03:42,670
‫Và sau khi dấu ngoặc đơn được dịch chuyển một khoảng cách, chúng ta sẽ đưa ra khái niệm không gian.

52
00:03:42,670 --> 00:03:47,680
‫Bây giờ các dòng nguệch ngoạc trong khoảng cách di chuyển sẽ được cập nhật sau một chút thời gian.

53
00:03:47,680 --> 00:03:53,290
‫Nhưng nếu chúng ta đi đến Unreal và nhấn nút biên dịch, đó sẽ là trọng tài cuối cùng xem liệu trình biên dịch

54
00:03:53,290 --> 00:03:55,780
‫có thích những gì chúng ta đã làm hay không.

55
00:03:55,780 --> 00:04:02,260
‫Và lần này biên dịch đã diễn ra thành công, có nghĩa là chúng ta đã cập nhật đúng mã

56
00:04:02,260 --> 00:04:03,100
‫của mình.

57
00:04:03,100 --> 00:04:08,860
‫Và điều đó có ý nghĩa bởi vì không có gì được gọi là từ get xa move mà không phải là khái niệm, nó không

58
00:04:08,860 --> 00:04:10,780
‫cố gắng thay đổi bất cứ điều gì.

59
00:04:10,780 --> 00:04:18,250
‫Và nơi chúng ta đang gọi một hàm trong nền tảng sẽ trả về, chúng ta chỉ sử dụng các hàm const và đây là một cách

60
00:04:18,250 --> 00:04:25,060
‫để chúng ta tăng độ an toàn cho mã của mình vì các hàm sẽ không thay đổi nội dung mà chúng ta không

61
00:04:25,060 --> 00:04:26,230
‫biết về nó.

62
00:04:26,230 --> 00:04:30,790
‫Bây giờ là một bài tập nhỏ cho bản thân, bạn có thể muốn xem qua và xem xét tất cả các chức

63
00:04:30,790 --> 00:04:35,380
‫năng mà chúng tôi đang sử dụng cho đến nay và xem chức năng nào được đánh dấu là hằng số, chức năng nào không.

64
00:04:35,410 --> 00:04:41,890
‫Bạn có thể thực hiện việc này bằng cách chỉ cần di chuột qua một chức năng chẳng hạn như lấy vị trí của diễn viên và xem liệu cửa

65
00:04:41,890 --> 00:04:46,240
‫sổ bật lên đó có được bao gồm hay không, liệu sau dấu ngoặc đơn có liên hệ hay không.

66
00:04:46,240 --> 00:04:53,050
‫Bạn có thể thấy với get vị trí hoạt động khi di chuột qua nó cho tôi biết, việc di chuột qua get name cũng cho tôi

67
00:04:53,050 --> 00:04:55,360
‫rằng đây là const và nó có ý nghĩa.

68
00:04:55,360 --> 00:04:59,560
‫Cả hai đều không nên thay đổi trạng thái của lớp chúng ta.

69
00:04:59,770 --> 00:05:05,110
‫Bây giờ nếu tôi di chuột qua tick, bạn có thể thấy cái này không được đánh dấu là const và điều đó

70
00:05:05,110 --> 00:05:11,350
‫có ý nghĩa vì Tick thường được sử dụng để cập nhật cách một lớp được định vị trên thế giới hoặc bất kỳ trạng thái nào của lớp.

71
00:05:11,500 --> 00:05:13,360
‫Và chúng tôi đã có véc tơ của mình.

72
00:05:13,360 --> 00:05:18,880
‫Nếu chúng ta di chuột qua, đến an toàn, bình thường, bạn có thể thấy rằng nó được đánh dấu là const,

73
00:05:18,880 --> 00:05:24,790
‫đó là vì get safe normal không thực sự sửa đổi vectơ, nó chỉ trả về một giá trị với một vectơ mới trong đó.

74
00:05:24,790 --> 00:05:25,510
‫À chính nó đấy.

75
00:05:25,510 --> 00:05:32,620
‫Đối với bài giảng này, chúng ta đã học về cách thêm const vào các hàm của chúng ta để tăng độ an toàn cho mã của chúng ta.

76
00:05:32,620 --> 00:05:34,060
‫Hẹn gặp lại các bạn trong phần tiếp theo.

