Aracılığıyla paylaş


Derleyici Uyarısı (düzey 1 ve düzey 4, kapalı) C4355

'this': temel üye başlatıcı listesinde kullanılır

İşaretçi this yalnızca statik olmayan üye işlevlerinde geçerlidir. Bir temel sınıf için başlatıcı listesinde kullanılamaz.

Temel sınıf oluşturucuları ve sınıf üyesi oluşturucuları oluşturucudan önce this çağrılır. Bu desen, bir işaretçiyi yapılandırılmamış bir nesneye başka bir oluşturucuya geçirmekle aynıdır. Diğer oluşturucular üzerinde herhangi bir üyeye erişirse veya üye işlevlerini thisçağırırsa sonuç tanımlanmamış olur. Tüm inşaat tamamlanana kadar işaretçiyi this kullanmamalısınız.

Bu uyarı varsayılan olarak kapalıdır. Daha fazla bilgi için bkz . Varsayılan Olarak Kapalı Olan Derleyici Uyarıları.

Aşağıdaki örnek C4355 oluşturur:

// C4355.cpp
// compile with: /w14355 /c
#include <tchar.h>

class CDerived;
class CBase {
public:
   CBase(CDerived *derived): m_pDerived(derived) {};
   ~CBase();
   virtual void function() = 0;

   CDerived * m_pDerived;
};

class CDerived : public CBase {
public:
   CDerived() : CBase(this) {};   // C4355 "this" used in derived c'tor
   virtual void function() {};
};

CBase::~CBase() {
   m_pDerived -> function();
}

int main() {
   CDerived myDerived;
}