Inicjalizacja statycznego obiektu
Ostatnio zmodyfikowano 2012-12-22 17:41
diego997 Temat założony przez niniejszego użytkownika |
Inicjalizacja statycznego obiektu » 2012-12-22 15:53:55 Jak w c++ zrobic cos takiego: class A { int x; public: void setX( int value ) { x = value; } };
class B { static A ObjectA; };
A B::ObjectA.setX( 5 );
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 ? |
|
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. |
|
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. |
|
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/UzZrxPDodam, iż zmienne statyczne siedzą mniej więcej tam, gdzie zmienne globalne - na tej zasadzie - są zawsze dostępne. |
|
jsc |
» 2012-12-22 17:41:28 Rzeczywiście, pokręciło mi się z akcesorami. |
|
« 1 » |