Avatar ·

متى ولماذا يجب استخدام noexcept في C++؟

مرحبًا أيها الزملاء! أكتب بلغة C++ منذ حوالي عام، وأستخدم بنشاط C++11/14. أرى باستمرار في الكود والمكتبات الكلمة المفتاحية `noexcept`، لكنني لا أفهم تمامًا متى يجب تطبيقها حقًا. على سبيل المثال، أكتب فئة تغليف بسيطة للعمل مع الملفات. إليك كيف أعرّف الأساليب عادةً: ```cpp class FileWrapper { public: FileWrapper(const std::string& filename) : file_(fopen(filename.c_str(), "r")) { if (!file_) throw std::runtime_error("Cannot open file"); } ~FileWrapper() { if (file_) fclose(file_); } bool is_open() const { return file_ != nullptr; } std::string read_line() { // ... قد يرمي استثناءً عند خطأ القراءة } void close() { if (file_) { fclose(file_); file_ = nullptr; } } private: FILE* file_; }; ``` الأسئلة: 1. هل يجب وضع علامة `noexcept` على المدمر؟ سمعت أن المدمرات تكون `noexcept` افتراضيًا، لكن هل يستحق الأمر كتابتها صراحةً؟