Stránka 1 z 1

Dereference pointeru v C++

Napsal: 26 úno 2010 22:48
od daviddda
Ahoj, zkousel jsem vytvorit naslednou jednoduchou tridu:

---header file----

Kód: Vybrat vše

class Test
{
public:
Test();
int zkouska();
};

---cpp file----

Kód: Vybrat vše

#include "Test.h"

Test::Test() {}

int Test::zkouska() {
return 987;
}

pote jsem ve funkci main() vytvoril pointer "dd" vytvorene tridy "Test" a priradil mu hodnotu NULL. Timto pointerem jsem vyvolal funkci tridy - zkouska() a divil jsem se, ze ji to v poradku vyvolalo a provedlo. Mel jsem za to, ze Null Pointer se na vyvolavani funkci pouzivat nemuze, ze by aplikace spadla:

Kód: Vybrat vše

int cislo=987;
Test* dd=NULL;

if (cislo==dd->zkouska()) cout<<endl<<"funguje"<<dd->zkouska();
else cout<<endl<<"nefunguje";

rozumi prosim nekdo jak je mozne, ze Null-Pointer funguje stejne jako initializovany pointer s new? Na internetu casto pisou: Avoid Null Pointer dereferencing - coz znamena, aby se Pointer initializovany s Null nepouzival jako initializovany Pointer - mel jsem zato, ze s nim tedy nejdou vyvolavat ani zadne funkce. Dekuji

Re: Dereference pointeru v C++

Napsal: 02 bře 2010 15:26
od daviddda
Myslim, ze uz jsem na to prisel. Pokud se pointer neinitializuje s new, potom jdou pouzivat pouze funkce, ktere nijak nejsou vazany na promenne definovane pro danou tridu. Pokud se pointer bez initializace pouzije k vyvolani metody, ktera cte, nebo zapisu promenne tridy, pak nastane konflikt.