Kezdőoldal » Számítástechnika » Programozás » Ha egy C++ osztály adatatgjaké...

Ha egy C++ osztály adatatgjaként pointereket szeretnék, az inicializáláskor hogyan tudom a valódi adatokat a memóriába tölteni, hogy ott maradjanak?

Figyelt kérdés

2012. aug. 29. 08:11
 1/3 iostream ***** válasza:

A pointernek kell egy mutató inicializáláshoz, pont, mint ahogy egy integernek kell egy integer.

Tehát:

class A

{

int x;

A(): x(0) {}

};


class B

{

int* xp;

B(): xp(new int(0)) {}

~B() {delete xp;}

};

2012. aug. 29. 09:35
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:
És akkor ez létrehoz lényegében egy int-et, amit viszont csak a pointerrel tudok elérni?
2012. aug. 29. 09:51
 3/3 anonim ***** válasza:

Az osztályban csak a mutatókat vezesd be, de a memória foglalást a konstructorodba írd, azaz mutass velük egy új változóra, a destructorban meg szüntesd meg őket, mert "benn ragadnak", és eszik a memóriát föleöslegesen(memory leak) plusz állíts nullára őket. Érdemes az osztályt is memóriába tenni, ehhez az osztályodra mutató mutatót csinálsz, majd ráállítod egy új objektumra. Ez a gyor progi nekem elsőre lefordult DEV C++-al. Kulcszó a konstruktor.


pl:


#include <iostream>


using namespace std;


class kiskatona

{

public:

kiskatona(int a){ health = new int; *health = a;}

~kiskatona(){ delete health; health = 0;}

int get_health()const{return *health;}

private:

int* health;

};


int main()

{

kiskatona* laci = new kiskatona(20);

cout << laci->get_health();

delete laci;

laci = 0;

cin.get();

return 0;

}

2012. aug. 29. 22:04
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!