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?
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;}
};
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;
}
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!