Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
'
this': används i basmedlemsinitieringslistan
Anmärkningar
Pekaren this är endast giltig inom ickestatiska medlemsfunktioner. Det kan inte användas i initialiserarlistan för en basklass.
Konstruktorerna för basklassen och konstruktörerna för klassens medlemmar anropas före this-konstruktorn. Det här mönstret är detsamma som att skicka en pekare till ett okonstruerat objekt till en annan konstruktor. Om dessa andra konstruktorer har åtkomst till några medlemmar eller anropar medlemsfunktioner på thisär resultatet odefinierat. Du bör inte använda pekaren this förrän all konstruktion är klar.
Den här varningen är inaktiverad som standard. Mer information finns i Kompilatorvarningar som är inaktiverade som standard.
Example
I följande exempel genereras C4355:
// 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;
}