Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Inicjalizacja statycznego obiektu

Ostatnio zmodyfikowano 2012-12-22 17:41
Autor Wiadomość
diego997
Temat założony przez niniejszego użytkownika
Inicjalizacja statycznego obiektu
» 2012-12-22 15:53:55
Jak w c++ zrobic cos takiego:

C/C++
class A
{
    int x;
public:
    void setX( int value ) { x = value; }
   
};

class B
{
    static A ObjectA;
   
};


A B::ObjectA.setX( 5 ); //Jak w inny sposob zrobic cos takieg?



Edit: Albo powiedzcie mi czy jezeli definiujemy obiekt jako statyczny i ta inicjalizacje zrobilbym w konstruktorze klasy B, to bez wzgledu na to ile obiektow klasy B bym powolal to ta instrukcja wykona sie tylko raz ? Czy dla kazdego obiektu bedzie sie wykonywac i ustawiac wartosc na 5 ?
P-71659
Mrovqa
» 2012-12-22 16:19:39
to bez wzgledu na to ile obiektow klasy B bym powolal to ta instrukcja wykona sie tylko raz ? Czy dla kazdego obiektu bedzie sie wykonywac i ustawiac wartosc na 5 ?
Ten obiekt jest wspólny dla wszystkich obiektów i istnieje zawsze (nawet zanim jakikolwiek obiekt tej klasy zacznie istnieć) - nie byłoby sensu ustawiać ciągle wartości inicjalizującej. Możesz ją zmienić w innym miejscu, ale ten kod na dole wykona się tylko raz. To wywołanie metody przy definicji wygląda mi jakoś podejrzanie - polecam wykorzystywać w celu inicjalizacji konstruktory.
P-71663
jsc
» 2012-12-22 17:02:57
(nawet zanim jakikolwiek obiekt tej klasy zacznie istnieć)

Kolega trochę zagalopował. Obiekt statyczny powstają przy pierwszy odwołaniu do klasy.
P-71669
Mrovqa
» 2012-12-22 17:29:51
@jsc zanim napiszesz coś, czego nie jesteś pewien - sprawdź to. Lepszy jest brak informacji, niż dezinformacja.
http://ideone.com/UzZrxP
Dodam, iż zmienne statyczne siedzą mniej więcej tam, gdzie zmienne globalne - na tej zasadzie - są zawsze dostępne.
P-71671
jsc
» 2012-12-22 17:41:28
Rzeczywiście, pokręciło mi się z akcesorami.
P-71672
« 1 »
  Strona 1 z 1