weak_ptr فئة
التفاف إلى مؤشر weakly مرتبطة.
template<class Ty> class weak_ptr {
public:
typedef Ty element_type;
weak_ptr();
weak_ptr(const weak_ptr&);
template<class Other>
weak_ptr(const weak_ptr<Other>&);
template<class Other>
weak_ptr(const shared_ptr<Other>&);
weak_ptr& operator=(const weak_ptr&);
template<class Other>
weak_ptr& operator=(const weak_ptr<Other>&);
template<class Other>
weak_ptr& operator=(shared_ptr<Other>&);
void swap(weak_ptr&);
void reset();
long use_count() const;
bool expired() const;
shared_ptr<Ty> lock() const;
};
المعلمات
- Ty
نوع التحكم بواسطة مؤشر ضعيف.
ملاحظات
فئة القالب يصف كائن الذي يشير إلى مورد التي هو إدارتها من قبل واحد أو المزيد shared_ptr فئةالكائنات. weak_ptrلا تؤثر على الكائنات التي أشر إلى مورد العد مرجع المورد. وبالتالي، عند آخر shared_ptrالكائن الذي يقوم بإدارة هذا مورد هو destroyed مورد سوف يتم تحريرها، حتى لو تكن weak_ptrالكائنات بالإشارة إلى هذا مورد. هذا الأساسية من أجل تجنب دورات في بنية بيانات.
weak_ptrالكائن نقاط إلى مورد إذا أنه تم بناء من shared_ptrالكائن الذي يملك ذلك المورد، إذا فإنه تم بناء من weak_ptrالكائن الذي نقاط لهذا المورد، أو إذا تم تعيين هذا المورد به مع weak_ptr::عامل =. weak_ptrكائن لا يوفر وصولاً مباشرا إلى مورد أنه نقاط ل. تعليمات برمجية التي تحتاج إلى استخدام مورد يقوم بذلك من خلال shared_ptrكائن التي يملكها ذلك مورد، والتي تم إنشاؤها بواسطة استدعاء دالة العضو weak_ptr::قفل. weak_ptrصلاحية الكائن عندما يشير أنه مورد إلى لقد تم تحرير لأن كافة shared_ptrتم إتلاف الكائنات التي تملك مورد. استدعاء lockتشغيل weak_ptrبإنشاء كائن التي انتهت مدة صلاحيتها تشغيل كائن shared_ptr فارغ.
كائن weak_ptr فارغ لا يشير إلى أية موارد و له لا توجد حظر التحكم. عضو به دالة lockإرجاع الكائنات shared_ptr فارغ.
دورة عند التحكم في موارد أو أكثر بواسطة shared_ptrالكائنات تقييد المرجعي التبادلية shared_ptrالكائنات. على سبيل المثال، يحتوي قائمة دائرية مرتبطة بالعناصر الثلاثة على عقدة رأس N0؛ تحمل تلك العقدة shared_ptrكائن التي يملكها العقدة التالية، N1؛ تحمل تلك العقدة shared_ptrكائن التي يملكها العقدة التالية، N2؛ تلك العقدة، يحتفظ بدورها، shared_ptrكائن الذي يملك عقدة الرأس، N0، إغلاق دورة. في هذه الحالة، أي من حساب مرجع أي وقت مضى سيصبح صفر، والعقد في دورة سوف لا يمكن تحريرها. للتخلص من الدورة، أخير عقده N2يجب الاحتفاظ weak_ptrكائن يشير إلى N0بدلاً من shared_ptrالكائن. منذ weak_ptrلا تمتلك الكائن N0لا يؤثر على N0لمرجع العد، وعندما الخاص البرنامج آخر مرجع عقدة الرأس هو destroyed سيتم أيضا إتلاف العقد في lهوt.
المتطلبات
Header: <ذاكرة>
**مساحة الاسم:**std