Dereference pointeru v C++

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Odpovědět
daviddda
Level 1
Level 1
Příspěvky: 72
Registrován: 18 led 2010 18:47

Dereference pointeru v C++

Příspěvek 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
daviddda
Level 1
Level 1
Příspěvky: 72
Registrován: 18 led 2010 18:47

Re: Dereference pointeru v C++

Příspěvek 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.
Odpovědět

Zpět na „Programování a tvorba webu“