c++ pointer newb ερώτηση
V13
v13 at v13.gr
Fri Nov 7 22:25:47 EET 2008
On Friday 07 November 2008, Θοδωρής Λύτρας wrote:
> Έχω μια ερώτηση για την C++ η οποία ίσως είναι αφελής, δεν τη βρίσκω όμως
> καθόλου αυτονόητη:
>
> Έστω ότι έχω μια κλάση Α, η οποία έχει ως μέλος της μια μεταβλητή Β, και
> δημιουργώ ένα αντικείμενό της στο σωρό (heap). Η μεταβλητή B δημιουργείται
> στο σωρό ή στη στίβα (stack)??? Π.χ.:
>
> class A
> {
> public:
> int B;
> }
>
> void main()
> {
> A *myA = new A();
> }
>
> Αν το A->B δημιουργείται στη στίβα, μήπως θα πρέπει να το δηλώσω ως δείκτη
> για να δημιουργηθεί στο σωρό? Όμως άν το κάνω αυτό, μετά πως μπορώ να
> αναφερθώ στην τιμή του B, δηλαδή να το κάνω dereference? Μήπως *Α->*Β ?? Η
> μήπως **Α->Β ?????????
Ean se mperdevei to parapano skepsoy os eksis:
struct A { int B; };
Einai *akribos* to idio.
Apo ekei kai pera, to myA desmevei mnimi apo to heap kai oysiastika h mnimi
poy xreiazetai to myA (typoy A) einai ta 4 bytes poy pianei o B. Ara, to
myA->B (kai oxi A->B opos egrapses) brisketai sth heap.
To parakato:
--------------
#include<iostream>
using namespace std;
class A
{
public:
int B;
};
int main()
{
A *myA = new A();
int *p;
myA->B=5;
p=(int *)myA;
cout << sizeof(A) << endl;
cout << *p << endl;
}
--------------
Exei eksodo:
$ ./a
4
5
> Α, και κάτι ακόμα: όταν στην κλάση μου ορίζω pointers, θα πρέπει να τους
> κάνω όλους delete στον destructor υποθέτω, έτσι???
Oti kaneis new/malloc prepei na to kaneis delete/free akribos mia fora. To poy
kai pos einai thema ylopoihshs.
<<V13>>
More information about the Linux-greek-users
mailing list