حافظه و منابع
مدل مالکیت C++ را از اشارهگرهای خام تا اشارهگرهای هوشمند و معناشناسی انتقال (move semantics) فرا بگیرید تا کدی بنویسید که هرگز نشت حافظه نداشته باشد.
اشارهگرها و ارجاعها
اشارهگرها: آدرسها، ارجاعزدایی و محاسبات اشارهگر
اشارهگرها را به عنوان آدرسهای حافظه درک کنید، عملگرهای آدرسدهی و ارجاعزدایی، محاسبات اشارهگر درون آرایهها، صحت const با اشارهگرها و زمان مناسب استفاده از اشارهگرهای خام در C++ مدرن را بیاموزید.
ارجاعها: Lvalue، Rvalue و دامها
ارجاعهای lvalue و rvalue را بررسی کنید، دستهبندی مقادیر C++ را درک کنید، قوانین فروپاشی ارجاع و ارجاعهای ارسال (forwarding references) را بیاموزید و از باگهای ارجاع معلق اجتناب کنید.
حافظه پویا: new، delete و خطرات آنها
نحوه کار تخصیص حافظه پویا با new و delete را بیاموزید، خطرات نشت حافظه، آزادسازی مضاعف (double-free) و استفاده پس از آزادسازی (use-after-free) را درک کنید و دلیل اینکه C++ مدرن باید صفر new/delete خام داشته باشد را کشف کنید.
اشارهگرهای هوشمند
std::unique_ptr: مالکیت انحصاری
بیاموزید که چگونه std::unique_ptr مالکیت انحصاری با سربار صفر فراهم میکند، نحوه استفاده از make_unique، حذفکنندههای سفارشی برای منابع C و الگوهای تابع کارخانهای.
shared_ptr، weak_ptr و گرافهای مالکیت
مالکیت اشتراکی مبتنی بر شمارش ارجاع با shared_ptr را درک کنید، چرخهها را با weak_ptr بشکنید، درباره بلوکهای کنترل و نامگذاری مستعار بیاموزید و بدانید چه زمانی shared_ptr انتخاب نادرستی است.
معناشناسی انتقال و RAII
معناشناسی انتقال و std::move
مشکلی که معناشناسی انتقال حل میکند را درک کنید، بدانید که std::move یک تبدیل نوع (cast) است نه یک انتقال، سازنده انتقال و عملگر تخصیص انتقال را پیادهسازی کنید و بیاموزید چرا noexcept برای عملکرد ظروف حیاتی است.
ارسال کامل و std::forward
درک کنید که چرا ارجاعهای rvalue نامدار lvalue هستند، الگوی استاندارد ارسال با std::forward را بیاموزید و ببینید چگونه emplace_back از ارسال متغیر (variadic forwarding) برای ساخت اشیاء در محل استفاده میکند.
RAII: الگوی اساسی مدیریت منابع
RAII (تحصیل منبع همان مقداردهی اولیه است) را بیاموزید — الگوی اصلی C++ برای مدیریت منابع ایمن در برابر استثنا. پوششدهندههای RAII را پیادهسازی کنید، lock_guard و scoped_lock را درک کنید و بیاموزید چرا انواع RAII باید فقط قابل انتقال یا شمارششده با ارجاع باشند.