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

Zmienna statyczna w klasie dziwny zapis [C++]

Object Storage Arubacloud
0 głosów
610 wizyt
pytanie zadane 2 grudnia 2018 w C i C++ przez profesorek96 Szeryf (91,420 p.)

Witam was.

Dziś czytałem ten artykuł:

http://www.mateuszmidor.com/2011/03/jak-wyprzedzic-main/

Tam natknołem się na taki kod:

#include <iostream>.
#include <cstdlib>
#include <ctime>
class Random
{
private:
    static int dummy;
    static int initialize()
    {
        srand(time(0));
        return 0;
    }

public:
    static double getDouble()
    {
        return (double) rand() / RAND_MAX;
    }
};
int Random::dummy = initialize();

using namespace std;

int main()
{
    return 0;
}

Moje pytanie dotyczy linii :

int Random::dummy = initialize();

Nie rozumiem tego zapisu bo czemu jest na początku int ? Jak to jest że można się odwołać do składowych pryvatnych ?

1 odpowiedź

0 głosów
odpowiedź 2 grudnia 2018 przez criss Mędrzec (172,590 p.)
wybrane 3 grudnia 2018 przez profesorek96
 
Najlepsza

Po prostu definicja zmiennej statycznej. Wewnątrz klasy jest deklaracja, a w linii 20. definicja. Zupełnie normalny kod. int jest na początku, bo taki jest typ zmiennej Random::dummy, a definicja w c++ wygląda tak samo jak deklaracja tylko, że dodatkowo znak przypisania albo brace-initialization.

Jak to jest że można się odwołać do składowych pryvatnych ?

To jest definicja a nie jako takie odwołanie, a szkoda by było gdybyśmy nie mogli definiować prywatnych memberów :D więc język na to pozwala. 

komentarz 2 grudnia 2018 przez profesorek96 Szeryf (91,420 p.)
ok czyli to poprostu jest przypisanie wartości do zmiennej.
komentarz 2 grudnia 2018 przez criss Mędrzec (172,590 p.)
Nie. To inicjalizacja. Przypisanie i inicjalizacja to dwie różne rzeczy.
1
komentarz 2 grudnia 2018 przez mokrowski Mędrzec (155,460 p.)

@profesorek96, usiądź spokojnie i przemyśl to.. 

Jeśli mamy taki twór jak klasa a z niej wyprowadzamy instancje czyli obiekty. Te instancje w momencie kreacji konstruktorem nadają sobie wartości atrybutów. Jak zrobić by był "jakiś taki konstruktor" samej klasy? Ona przecież może mieć "swoje atrybuty klasowe" określane jako statyczne...

No i wybrano taki sposób inicjalizacji jak widzisz... 

Mam nadzieję że nieco nieformalne tłumaczenie Cię nie urazi :)

 

komentarz 3 grudnia 2018 przez profesorek96 Szeryf (91,420 p.)
Dzięki za pomoc :)

Podobne pytania

0 głosów
1 odpowiedź 187 wizyt
0 głosów
1 odpowiedź 1,206 wizyt
pytanie zadane 31 sierpnia 2018 w C i C++ przez profesorek96 Szeryf (91,420 p.)
0 głosów
1 odpowiedź 203 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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!

...