Gentle Introduction Into Modern C++

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

في هذه الصفحة

مقدمة

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

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

اشترك الآن بنشرة اقرأ-تِك الإخبارية

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