Gentle Introduction Into Modern C++

هي من اللغات المستخدمة بكثافة في الجامعات لتدريس مواد مثل الخوارزميات و أنظمة التشغيل و هي اللغة اللي وراء أهم ال Technologies اللي بنستخدمها يومياً مثل WebBrowsers: ChromiumEngine, Firefox و تقريباً كل
Gentle Introduction Into Modern C++

في هذه الصفحة

مقدمة

لغة 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

هذا المقال مخصص للأعضاء المنتسبين لخطط الاشتراك المدفوعة فقط

مقالات ذات صلة

اشترك الآن بنشرة اقرأ-تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!