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

daviddda
Level 1
Level 1
Příspěvky: 72
Registrován: leden 10
Pohlaví: Muž
Stav:
Offline

Dereference pointeru v C++

Příspěvekod daviddda » 26 úno 2010 22:48

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

Reklama
daviddda
Level 1
Level 1
Příspěvky: 72
Registrován: leden 10
Pohlaví: Muž
Stav:
Offline

Re: Dereference pointeru v C++

Příspěvekod daviddda » 02 bře 2010 15:26

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.


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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti