🔁
C++ — RAII, перемещение, владение
RAII как фундамент C++, правило пяти/нуля, move-конструкторы, copy elision, NRVO, управление ресурсами, идиома владения, swap.
30 вопросов · 30 показано
EasyЧто такое RAII и почему это основа C++?raiiMediumВ чём отличие RAII от сборки мусора (GC)?raiigcEasyСформулируйте правило трёх (Rule of Three).rule-of-threeMediumСформулируйте правило пяти (Rule of Five).rule-of-fivemove-semanticsMediumСформулируйте правило нуля (Rule of Zero).rule-of-zeroMediumЧто такое copy elision и когда компилятор его применяет?copy-elisionMediumЧем NRVO отличается от RVO?copy-elisionnrvoMediumПочему move-конструкторы должны быть noexcept?move-semanticsnoexceptHardЧто такое copy-and-swap идиома?copy-and-swapMediumКак реализовать swap для своего класса?swapHardЧто такое идиома Pimpl (pointer to implementation)?pimplMediumЧто такое ownership и какие виды владения бывают в C++?ownershipEasyПочему не стоит использовать std::auto_ptr?auto-ptrdeprecatedHardЧто такое intrusive reference counting?refcountshared-ptrMediumЧто такое small buffer optimization (SBO) и где он используется?sbooptimizationEasyВ каком состоянии находится объект после std::move?move-semanticsMediumЧто такое перемещающий конструктор по умолчанию (= default)?move-semanticsdefaultHardЧем отличается `T&& x` от `T& x` в шаблоне?forwarding-referencervalueMediumЧто такое exception safety guarantees и какие бывают?exception-safetyMediumЧто такое идиома pimpl и зачем нужен явный деструктор в .cpp?pimplHardЧто такое smart pointer deleter и когда он полезен?smart-pointersdeleterHardЧто такое enable_shared_from_this и когда он нужен?shared-ptrenable-shared-from-thisEasyЧем отличается stack allocation от heap allocation?memorystack-heapMediumЧто такое static lifetime и каковы особенности static-объектов?staticlifetimeMediumЧто такое thread-local storage (thread_local)?thread-localc++11HardЧто такое идиома CRT (Curiously Recurring Template Pattern)?crtpHardЧто такое expression templates?expression-templatesMediumЧто такое идиома non-virtual interface (NVI)?nvıdesignEasyЧто такое RAII-обёртка для mutex (std::lock_guard, std::unique_lock)?raiimutexconcurrencyMediumПочему нельзя бросать исключения из деструктора?destructorexception