Co oznacza magiczne słowo "static"?
Już wiem co to jest. Widziałem jak zmienne w klasach były poprzedzane słowem static. Co to im daje?
Własnie to czytałem. Ale czy to mi coś daje. Np. szybciej działą program czy coś?
Słyszałem, że w C# np. czyni to metody klasy globalnymi.
Gregory:
Zmienna static zadeklarowana w klasie będzie miała taką samą wartość we wszystkich obiektach tej klasy.
Zmienna statyczna zadeklarowana wewnątrz funkcji, będzie zachowywała swoją wartość podczas kolejnych wywołań tej funkcji.
dodatkowo do zmiennych static klasy można się odwoływać bez tworzenia instancji tej klasy
i na prawdę zacznij korzystać z googla bo to ani nie boli ani nie gryzie
- Czy mogę od razu w klasie podawać wartość statica np.:
CKlasa
{
static zmienna = 20;
};
i
czy metody mogą być statyczne i czy to im daje to samo co zmiennym?
gregory EX napisał(a)
Czy mogę od razu w klasie podawać wartość statica
NIE !!
gregory EX napisał(a)
czy metody mogą być statyczne i czy to im daje to samo co zmiennym?
mogą być statyczne i są wtedy wspólny dla całej klasy a nie konkretnego obiektu
teraz takie pytanie od siebie: czy ty nigdy nie miałeś jakieś ksiązki w ręku ??
static jeszcze ogranicza widoczność funkcji do pliku w którym ja zdefiniowano i jeśli masz życzenie to
później możesz użyć tejsamej nazwy funkcji do dodefinicji innej
A mogę zrobic coś takiego :
class CKlasa
{
const zmienna = 20;
};
?
A czy mogę zrobić tak w klasie:
const zmienna = 1;
Nie. Ale możesz:
static const zmienna = 1;
-
A dlaczego nie?
-
Miałem przerwę w programowaniu w C++, więc mam pewne zaniki pamięci. Moje kolejne pytanie: Jak to jest z tym dziedziczeniem konstruktorów?
Mam taki kod np.:
class CKlasa
{
public:
int zmienna;
CKlasa()
{
zmienna = 20;}
};
class CKlasa2 : public CKlasa
{
public:
char zmienna2;
CKlasa2()
{
zmienna2 = "A"}
};
i teraz czy jak utworzę obiekt klasy CKlasa2, to czy będzie on miał zmienną zmienna o wartości podanej w konstruktorze klasy nadrzędnej?
A czy Ty czytałeś jakikolwiek kurs tegoż języka? A czy Ty posiadasz takie narzędzie jak kompilator? Ręce opadają...
Ad.1
Bo wartości stałym nadajesz w liście inicjalizującej konstruktora, dlatego, że tak wymyślili i już.
Ad.2
Konstruktor jest domyślny więc sie wywoła. Gdyby miał jakieś parametry (nie domyślne) to musiałbyś go wywołać w liście inicjalizującej. Konstruktory wywołują się od najstarszej klasy.