﻿1
00:00:04,420 --> 00:00:05,260
‫أهلا ومرحبا.

2
00:00:05,260 --> 00:00:10,900
‫في هذه المحاضرة ، سنلقي نظرة على مكافئ C ++ لوظائف المخطط الخالصة ، وهي

3
00:00:10,900 --> 00:00:12,400
‫وظائف المفهوم.

4
00:00:12,400 --> 00:00:17,950
‫سنرى ما هي هذه الكلمة الرئيسية للقرين ، وكيف نستخدمها ، وكيف أنها تقيد ما يمكننا القيام به في

5
00:00:17,950 --> 00:00:20,200
‫الكود الخاص بنا لجعلنا أكثر أمانًا.

6
00:00:20,200 --> 00:00:22,000
‫دعونا نتعمق ونرى كيف يعمل.

7
00:00:22,850 --> 00:00:29,600
‫في الطباعة الزرقاء ، تمكنا من جعل الوظيفة نقية ، وهذا يعني أنه يمكننا التخلص

8
00:00:29,600 --> 00:00:32,570
‫من الحاجة إلى دبابيس التنفيذ.

9
00:00:32,600 --> 00:00:38,840
‫الآن ، في C ++ ، يمكننا القيام بشيء أقوى قليلاً ، وهو جعل الدالة ثابتة.

10
00:00:39,230 --> 00:00:41,540
‫الآن ، ماذا يعني إنشاء دالة const؟

11
00:00:41,570 --> 00:00:50,330
‫هذا يعني أن هذه الوظيفة لا يمكنها تعديل حالة الفصل الخاص بك ، ويتم فرضها بالفعل من خلال قواعد

12
00:00:50,330 --> 00:00:51,950
‫المترجم.

13
00:00:51,950 --> 00:00:54,500
‫لذا اسمحوا لي أن أعطيك مثالا.

14
00:00:54,500 --> 00:01:01,220
‫إذا كنت سأستخدم وظيفة إرجاع النظام الأساسي الخاصة بنا ، فهذه ليست وظيفة يجب أن

15
00:01:01,220 --> 00:01:07,790
‫تعدل أي شيء في الفصل وستكون خطأ حقًا إذا نسينا ذلك لأنه سيكون من الغريب استدعاء

16
00:01:07,790 --> 00:01:14,570
‫هذا واستخدامه في عبارة if بالفعل موقع النظام الأساسي أو إذا تم تحديث مسافة الحركة

17
00:01:14,570 --> 00:01:16,460
‫أو سرعة المنصة.

18
00:01:16,640 --> 00:01:20,540
‫حتى نحافظ على صدقنا في ذلك ، يمكننا تحويله.

19
00:01:20,540 --> 00:01:28,610
‫والطريقة التي نقوم بها هي وضع الكلمة الأساسية للاتصال بعد أقواس الوظيفة.

20
00:01:28,610 --> 00:01:30,920
‫غالبًا ما نترك مساحة هنا أيضًا.

21
00:01:31,220 --> 00:01:38,390
‫الآن ، لكي تتطابق بشكل صحيح مع الوظيفة الموجودة في ملف C ++ ، يتعين علينا بالفعل وضع هذه

22
00:01:38,390 --> 00:01:41,700
‫الكلمة الرئيسية الثابتة هناك أيضًا.

23
00:01:41,720 --> 00:01:46,730
‫الآن ، كما قلت ، هذا يجعل من الخطأ فعل أي شيء من شأنه تعديل الفصل.

24
00:01:46,730 --> 00:01:53,480
‫لذلك إذا كان يجب إرجاع النظام الأساسي ، فقد حاولت تعديل متغير فئة مثل مسافة التحرك.

25
00:01:53,480 --> 00:01:57,050
‫قد أحاول ضبط مسافة التحرك على 200.

26
00:01:57,320 --> 00:02:01,700
‫دعونا نرى ما يحدث عندما ننتقل إلى غير الواقعي ونضغط على زر الترجمة.

27
00:02:01,700 --> 00:02:02,020
‫تمام.

28
00:02:02,030 --> 00:02:03,830
‫يمكنك أن ترى أن هناك خطأ الآن.

29
00:02:03,830 --> 00:02:09,230
‫إنه يفشل في البناء وإذا نظرت إلى الخطأ ، يمكنك أن ترى أن هناك شيئًا يقال

30
00:02:09,230 --> 00:02:15,110
‫هنا حول عدم القدرة على تعديل شيء ما لأنه يتم الوصول إليه من خلال مؤشر ثابت.

31
00:02:15,110 --> 00:02:17,330
‫الآن لا تقلق بشأن هذه اللغة.

32
00:02:17,330 --> 00:02:22,490
‫من الصعب بعض الشيء تفسيره ، لكن النقطة المهمة هي أن كلمة const كانت موجودة وتقول إنها

33
00:02:22,490 --> 00:02:25,760
‫غير قادرة على تعديل شيء ما وهذا أمر بالغ الأهمية.

34
00:02:25,760 --> 00:02:31,820
‫أيضًا ، إذا قمت باستدعاء أي وظائف لم يتم تمييزها على أنها ثابتة ، فهذه أيضًا مشكلة.

35
00:02:31,820 --> 00:02:38,510
‫لذلك ، في حين أنه من الجيد استدعاء الحصول على موقع الممثل ، فإن وظيفة التكلفة لا تغير أي شيء يحصل على

36
00:02:38,510 --> 00:02:39,410
‫الموقع فقط.

37
00:02:39,410 --> 00:02:48,140
‫ليس من المقبول استدعاء موقع ممثل معين لم يتم تمييزه على أنه ثابت وبالتالي فهو غير صالح.

38
00:02:48,140 --> 00:02:50,270
‫يمكن أن يكون تعديل الفصل.

39
00:02:50,270 --> 00:02:55,760
‫لذلك لا يُسمح باستدعاء أي دالة لم يتم تمييزها على أنها const من داخل دالة التكلفة.

40
00:02:56,090 --> 00:02:58,730
‫وهكذا يمكنك أن ترى ظهور مشكلة.

41
00:02:58,730 --> 00:03:05,900
‫لا يمكننا في الواقع استدعاء نقل المسافة من داخلنا في حالة عودة النظام الأساسي لأنه يجب أن يكون إرجاع النظام الأساسي ثابتًا

42
00:03:05,900 --> 00:03:09,620
‫ولكن لم يتم وضع علامة على المسافة المنقولة على هذا النحو.

43
00:03:09,620 --> 00:03:16,280
‫لذا ، فإن الشحن السريع الذي تحصل عليه من المسافة المقطوعة يجعل الحصول على تكلفة نقل المسافة ، لذا في الرأس

44
00:03:16,280 --> 00:03:22,040
‫ورؤية ملف p ، ستضيف هذه الكلمة الأساسية الثابتة للسماح لـ C ++ بمعرفة أنه لا ينبغي تعديل الفصل

45
00:03:22,220 --> 00:03:26,120
‫الدراسي وهل يتم تجميعه الآن أوقف الفيديو واذهب.

46
00:03:29,320 --> 00:03:29,770
‫تمام.

47
00:03:29,770 --> 00:03:30,420
‫مرحبًا بعودتك.

48
00:03:30,430 --> 00:03:32,830
‫لذلك سننتقل إلى ملف الرأس أولاً.

49
00:03:32,830 --> 00:03:37,120
‫وبعد أقواس الإغلاق ، سنضيف مفهوم المسافة ثم نعود

50
00:03:37,120 --> 00:03:38,530
‫إلى ملف C ++.

51
00:03:38,530 --> 00:03:42,670
‫وبعد انتقال المسافة بين الأقواس ، سنضع مفهوم الفضاء.

52
00:03:42,670 --> 00:03:47,680
‫الآن يجب أن يتم تحديث الخطوط المتعرجة الموجودة أسفل مسافة نقل المسافة في وقت قصير.

53
00:03:47,680 --> 00:03:53,290
‫ولكن إذا انتقلنا إلى Unreal وضغطنا على زر الترجمة ، فسيكون هذا هو الحكم النهائي فيما

54
00:03:53,290 --> 00:03:55,780
‫إذا كان المترجم يحب ما فعلناه أم لا.

55
00:03:55,780 --> 00:04:02,260
‫وهذه المرة نجحت عملية التجميع بنجاح ، مما يعني أننا قمنا بتحديث الكود الخاص بنا بشكل

56
00:04:02,260 --> 00:04:03,100
‫صحيح.

57
00:04:03,100 --> 00:04:08,860
‫وهذا منطقي لأنه لا يوجد شيء يتم استدعاؤه من تحريك المسافة وهذا ليس مفهومًا ، إنه

58
00:04:08,860 --> 00:04:10,780
‫لا يحاول تغيير أي شيء.

59
00:04:10,780 --> 00:04:18,250
‫وحيث نستدعي وظيفة في حالة عودة النظام الأساسي ، فإننا نستخدم فقط وظائف const

60
00:04:18,250 --> 00:04:25,060
‫وهذه طريقة لنا لزيادة أمان الكود لأن الوظائف لن تغير الأشياء دون علمنا

61
00:04:25,060 --> 00:04:26,230
‫بها.

62
00:04:26,230 --> 00:04:30,790
‫الآن كتمرين بسيط لنفسك ، قد ترغب في المرور وإلقاء نظرة على جميع الوظائف التي استخدمناها

63
00:04:30,790 --> 00:04:35,380
‫حتى الآن ومعرفة أي منها تم تمييزه على أنه ثابت ، وأي منها ليس كذلك.

64
00:04:35,410 --> 00:04:41,890
‫يمكنك القيام بذلك ببساطة عن طريق تمرير مؤشر الماوس فوق وظيفة مثل الحصول على موقع الممثل ومعرفة ما إذا

65
00:04:41,890 --> 00:04:46,240
‫كانت النافذة المنبثقة مضمنة ، سواء بعد الأقواس بها جهة اتصال أم لا.

66
00:04:46,240 --> 00:04:53,050
‫يمكنك أن ترى مع التمرير على موقع نشط يحوم فوقه يمنحني ثابتًا يحوم فوق الاسم كما يعطيني

67
00:04:53,050 --> 00:04:55,360
‫أن هذا ثابت ومن المنطقي.

68
00:04:55,360 --> 00:04:59,560
‫لا ينبغي أن يغير أي من هذين الشخصين حالة طبقتنا.

69
00:04:59,770 --> 00:05:05,110
‫الآن إذا قمت بالمرور فوق علامة التجزئة ، يمكنك رؤية هذا لم يتم تمييزه على أنه ثابت وهذا

70
00:05:05,110 --> 00:05:11,350
‫أمر منطقي لأن Tick يستخدم عادةً لتحديث كيفية وضع الفصل في العالم أو أي حالة من حالات الفصل الدراسي.

71
00:05:11,500 --> 00:05:13,360
‫ولدينا المتجه الخاص بنا.

72
00:05:13,360 --> 00:05:18,880
‫إذا مررنا بالماوس فوقها ، وأصبحنا آمنين ، بشكل طبيعي ، يمكنك أن ترى أنه تم تمييزها على أنها ثابتة ، وذلك

73
00:05:18,880 --> 00:05:24,790
‫لأن الحصول على الوضع الآمن بشكل طبيعي لا يعدل في الواقع المتجه ، بل يقوم فقط بإرجاع قيمة مع متجه جديد فيه.

74
00:05:24,790 --> 00:05:25,510
‫هذا كل شيء.

75
00:05:25,510 --> 00:05:32,620
‫في هذه المحاضرة تعلمنا عن إضافة const إلى وظائفنا لزيادة أمان الكود الخاص بنا.

76
00:05:32,620 --> 00:05:34,060
‫سأراك في المرحلة التالية.

