لغة C++ هي من اللغات المستخدمة بكثافة في الجامعات لتدريس مواد مثل الخوارزميات و أنظمة التشغيل و هي اللغة اللي وراء أهم ال Technologies اللي بنستخدمها يومياً مثل WebBrowsers: ChromiumEngine, Firefox و تقريباً كل الGame Engines: Unreal Engine, Unity, Godot و معظم ال Databases و الجرافيكس سوفتوير كلها مكتوبة ب C++ و مع كل هذا ألاحظ أن ما يدرس عن اللغة لا يتعدي عن ما تعلمته في لغة C لكن مع اضافة Classes و لكن في الحقيقة C++ أكبر بكثير من مجرد C + Classes و هذا ما سوف تستفيض فيه هذه المقالة عن الإضافات التي تم اضافتها بعد C++11 و سنتكلم عن أهم مفهوم Concept في Modern C++ و هو RAII
RAII
ال RAII و هي اختصار ل Resource Acquisition Is Initialization و الفكرة ورا الكلام اللي يبان كبير و صعب ده ان كل Hardware resource سواء (Memory, File handles, network connections) هيبقي مربوط بال lifetime بتاع الobject اللي بيعبر عنه و الlifetime بتاعت الobject هي بتعبر عن امتي الobject ده هيفضل In Scope و بكده كل object هيستحوذ علي شوية Hardware resources لما تعمله Construct و هيحررfree الresources ديه لما يبقي out of scope و سعتها الdestructor بتاع الobject تلقائياً هيتعمله call و هنلاقي مفهوم الRAII ده مطبق في تقريباً كل الobjects في ال std مثلاً std::ifstream
# include <iostream>
# include <fstream>
# include <string>
int main() {
std::ifstream inFile("example.txt");
// Handle errors
if (!inFile.is_open()) {
std::cerr << "Could not open the file." << std::endl;
return 1;
}
// Read and output the contents of the file
std::string line;
while (std::getline(inFile, line)) {
std::cout << line << std::endl;
}
// File is automatically closed when inFile goes out of scope
return 0;
}
في الCode Example ده أنا مش مضطر أفتكر أقفل الFile بعد مستخدمه هو هيقفل لوحده لما يبقي out of scope و ده ببساطة الRAII اللي قايم عليه lمفاهيم كتير في C++
Manual Memory Management
قبل منفهم ما هو ال Smart Pointer لازم نفهم ايه المشكلة اللي ال Smart Pointer بيحاول يحلها و عشان كده لازم نتكلم شوية عن ال Manual Memory Management و هو ببساطة الطريقة اللي احنا متعودين ندير بيها الMemory في لغة الC و هي ان كل ما هنعمل Allocation علي الheap لازم نفتكر نعمله free بعد منخلص استخدامه و هي طريقة بتعتمد بشكل كبير علي ان المبرمجين يتتبعوا كل Allocation علي ال heap ويعرفوا فين بظبط يعملوله free وهي طريقة error prone جداًُ و كانت سبب لMemory bugs كتير جداً في العقود السابقة و عشان كده هنتكلم عن 3 من اشهر الMemory bugs
Dangling pointers
النشرة الأسبوعية
اشترك الآن في نشرة اقرأتِك الأسبوعية
لا تدع أي شيء يفوتك. احصل على أحدث المقالات والشروحات البصرية ومدونات الشركات العالمية مباشرة إلى بريدك الإلكتروني — وبشكل مجاني تمامًا.