C++ Intro
معرفی جامع C++: فراسویِ محدودیتها 🚀🧩
زبان C++ یک زبان Multi-paradigm است؛ یعنی هم از برنامهنویسیِ رویهای (Procedural) مثل C پشتیبانی میکند، هم از برنامهنویسیِ شیءگرا (OOP) و هم از برنامهنویسیِ عمومی (Generic) با استفاده از تمپلیتها.
۱. تفاوتهای بنیادی با زبانهای سطح بالا
برخلاف زبانهایی مثل جاوا که از Garbage Collector استفاده میکنند، در C++ مسئولیت مدیریت حافظه بر عهده شما است. این یعنی کنترلِ مطلق، اما با مسئولیتِ بزرگ!
۲. استانداردهای C++
این زبان زنده است و مدام بروزرسانی میشود. از استاندارد C++98 تا استانداردهای مدرنِ C++11, C++14, C++17, C++20 و C++23. در این دوره ما تمرکز را بر روی مفاهیم استاندارد و مدرن قرار میدهیم.
Smart Pointers اضافه شدهاند که خطرِ نشتِ حافظه (Memory Leak) را تقریباً به صفر میرسانند.
چرا C++ یاد بگیریم؟
- درک عمیق از نحوهی کارکرد کامپیوتر.
- تقویت تفکر الگوریتمیک.
- دسترسی به پردرآمدترین و باارزشترین پوزیشنهای شغلی در شرکتهای لولِ بالا.
بخش تخصصی: مهندسی و معماری C++ 🚀⚙️⚡
زبان C++ فقط یک نسخه ارتقا یافته از C نیست؛ بلکه یک هیولای چندوجهی است که قدرت سختافزاری C را با انتزاعهای سطح بالای مدرن ترکیب میکند.
۱. فضای نام (Namespace): خروج از بحران تداخل نامها
در زبان C، اگر دو کتابخانه تابعی با نام print() داشتند، شما دچار مشکل بزرگی میشدید. در C++ مفتی به نام Namespace معرفی شد. تمام توابع استاندارد در فضای نام std قرار دارند. این به این معناست که std::cout یعنی از شیء cout که در "قلمرو" استاندارد است استفاده کن.
۲. معماری I/O و امنیت نوع (Type Safety)
در C ما از printf استفاده میکردیم که یک تابع Variadic است و خطرات امنیتی زیادی دارد. اما در C++ ما از Streams استفاده میکنیم. عملگر << (Insertion Operator) هوشمند است؛ یعنی خودش میفهمد شما دارید یک عدد میفرستید یا یک متن، بدون اینکه نیاز به %d یا %s باشد.
۳. خط لوله کامپایل (The C++ Compilation Pipeline)
وقتی دکمه Run را میزنید، C++ مراحل پیچیدهای را طی میکند:
- Preprocessor: هدرها (مثل iostream) را کپی میکند.
- Compiler: کد را به اسمبلی تبدیل میکند. در اینجا C++ از تکنیکی به نام Name Mangling استفاده میکند تا سربارگذاری توابع (Overloading) ممکن شود.
- Linker: کدهای شما را به کتابخانههای سیستم متصل میکند تا فایل اجرایی نهایی ساخته شود.
std::endl علاوه بر شکستن خط، بافر را هم خالی (Flush) میکند. اگر سرعت بسیار بالا نیاز دارید، از \n استفاده کنید تا سیستمعامل هر بار مجبور به تخلیه بافر نشود.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
یک برنامه بنویسید که عبارت C++ is Evolving را چاپ کند.
#include <iostream>
using namespace std;
int main() {
cout << "C++ is Evolving";
return 0;
}
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.