• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Rozmiar klasy - operator sizeof

Object Storage Arubacloud
0 głosów
197 wizyt
pytanie zadane 29 października 2018 w C i C++ przez periedynek Obywatel (1,320 p.)

Cześć. Mógłby mi ktoś wyjasnić skąd jest taki a nie inny rozmiar klasy?

Mam klasę punkt:

class Point2D
{
private:
       double x;
       double y;
public:
    Point2D();
    Point2D(double, double);
};

Klasę przykład:

class Example
{
    float x1;
    float x2;
    Point2D point;
public:
    Example();
    double area();
};

Pokazuje mi, ze klasa punkt ma 16 bajtów, mimo że posiada tylko dwie zmienne. Na moje powinno być 8 bajtów.

Wnioskuje, że przez to klasa Example ma 24 bajty. 16 od Pointa, 8 od siebie.

Nie rozumiem tylko jak to się dzieje. Dlaczego Punkt ma 16 bajtów i dlaczego mimo, że nie dziedziczymy klasy Punkt w klasie Example ona przyjmuje dodatkowe 16 bajtów

1 odpowiedź

0 głosów
odpowiedź 29 października 2018 przez Tomek Kozioł Obywatel (1,740 p.)
8 bajtów jest od zmiennych float a reszta od point, point będzie miał 16 bajtów bo tyle ma suma zmiennych w obrębie point. Chyba dobrze napisałem.
komentarz 29 października 2018 przez periedynek Obywatel (1,320 p.)
Nie takie było pytanie.
komentarz 29 października 2018 przez Tomek Kozioł Obywatel (1,740 p.)
Dodatkowe 16 bajtów przyjmuje dlatego że ta klasa ma w sobie obiekt innej klasy o rozmiarze 16 bajtów. A te 16 bajtów w tym obiekcie zależy od zawartych w nim zmiennych.
komentarz 29 października 2018 przez periedynek Obywatel (1,320 p.)
"Nie rozumiem tylko jak to się dzieje. Dlaczego Punkt ma 16 bajtów i dlaczego mimo, że nie dziedziczymy klasy Punkt w klasie Example ona przyjmuje dodatkowe 16 bajtów"

Na jedno pytanie mniej więcej odpowiedziałeś, choć dalej się motam.

Ale głównie chodzi o to 1, dlaaczego klasa Punkt ma 16 bajtów, jak mamy tam 2 zmienne?
1
komentarz 29 października 2018 przez monika90 Pasjonat (22,940 p.)
Jeżeli double zajmuje 8 bajtów, (a na ogół tyle zajmuje) i masz dwa double, to nie może być mniej niż 16 bajtów.
komentarz 29 października 2018 przez periedynek Obywatel (1,320 p.)
Ah, myslalem ze ma tyle samo co int, czyli 4 bajty.

Podobne pytania

0 głosów
2 odpowiedzi 511 wizyt
pytanie zadane 6 czerwca 2023 w C i C++ przez Daaa22 Dyskutant (8,250 p.)
0 głosów
1 odpowiedź 498 wizyt
0 głosów
2 odpowiedzi 159 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...