Eventuali duplicati:
Calling class method through NULL class pointerPerché il metodo di chiamata tramite puntatore nullo "funziona" in C++?
#include <iostream>
using namespace std;
class test
{
int i;
public:
test():i(0){ cout << "ctor called" << endl;}
void show()
{
cout<<"show fun called"<<endl;
}
};
int main(int argc , char *argv[])
{
test *ptr = NULL;
ptr->show();
return 0;
}
chiaramente, non ctor sarà chiamato. È questo standard? o solo qualche ottimizzazione del compilatore in quanto questo puntatore non è usato nella funzione membro show()?
Il dereferenziamento di un puntatore nullo è UB. – chris
Aggiungi 'i = 1;' all'interno di 'show()' e prova ad eseguirlo. –
chris, UB significa implementazione del compilatore? e sto usando g ++ 4.6.3. Jesse Bene, certo, seg colpa, non c'è dubbio. Mi chiedo se il compilatore genererà il codice senza questo per la funzione membro che non ne ha bisogno. – bbc