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;
}