Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
'
this': usado na lista de inicializadores de membros base
Observações
O this ponteiro é válido apenas em funções de membro não estáticas. Ele não pode ser usado na lista de inicializadores de uma classe base.
Os construtores da classe base e os construtores de membro da classe são chamados antes do construtor this. Esse padrão é o mesmo que passar um ponteiro para um objeto ainda não construído para outro construtor. Se esses outros construtores acessarem qualquer membro ou chamarem funções de membro no this, o resultado será indefinido. Você não deve usar o this ponteiro até que toda a construção esteja concluída.
Este aviso está desativado por padrão. Para obter mais informações, consulte Avisos do compilador que estão desativados por padrão.
Example
O exemplo a seguir gera 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;
}