admin
|
|
« Odpowiedz #1 : Kwiecieñ 04, 2013, 07:09:27 » |
|
Zmienne statyczne w klasach. Statyczne pola klasy definiuje sie podobnie do zmiennych lokalnych, poprzez u¿ycie s³owa kluczowego static:
class samochod { private: // dane opisujace samochód public: static int predkosc; }; int samochod::predkosc;
Podobnie jak zmienna statyczna lokalna, statyczne pole klasy jest tworzone tylko raz, w tym samym obszarze co zmienne globalne i ca³y czas pamiêta swoj± ostatni± warto¶æ. Pole statyczne jest tworzone zanim zostanie utworzony pierwszy obiekt danej klasy. Zazwyczaj - tworzone s± ju¿ na samym starcie programu.
Tak jak zmienna lokalna pamiêta swoj± warto¶æ pomiêdzy kolejnymi wywo³aniami, tak pole statyczne klasy pamiêta swoj± warto¶æ "pomiêdzy obiektami". Nie wa¿ne z jakiego obiektu siê do niego odwo³asz, warto¶æ bêdzie ta sama, wspólna dla wszystkich obiektów.
samochod ford, fiat, volvo; //stworzenie 3 obiektow fiat.predkosc = 100; cout << ford.predkosc << endl; //wypisze 100 volvo.predkosc = 120; cout << fiat.predkosc << endl; //wypisze 120
/////////////////////// ---Ca³y program---//////////////////////////////////////////////////////////////// #include <cstdlib> #include <iostream>
using namespace std;
class samochod { public: static int predkosc; }; int samochod::predkosc; int main(int argc, char *argv[]) { samochod ford, fiat, volvo; fiat.predkosc=100; cout<<"ford "<<ford.predkosc<<endl; volvo.predkosc=120; cout<<"fiat "<<fiat.predkosc<<endl;
system("PAUSE"); return EXIT_SUCCESS; }
///////////////////-- kolejny program pokazuj±cy ,¿e statyczne zmienne dzia³aj± tylko dla potomków tylko tej samej klasy --//////////////////////////
#include <cstdlib> #include <iostream>
using namespace std;
class samochod { public: static int predkosc; }; int samochod::predkosc; class motor { public: static int predkosc; }; int motor::predkosc; int main(int argc, char *argv[]) { samochod ford, fiat, volvo; motor nsu, bmw, yamaha; fiat.predkosc=100;
cout<<"ford "<<ford.predkosc<<endl; cout<<"nsu "<<nsu.predkosc<<endl; volvo.predkosc=120; cout<<"fiat "<<fiat.predkosc<<endl;
system("PAUSE"); return EXIT_SUCCESS; }
#include <cstdlib> #include <iostream> using namespace std;
class samochod {public: static int predkosc; public: samochod(){}; ~samochod(){};}; class motor { public: static int predkosc; }; class scigacz : public motor {}; int motor::predkosc; int samochod::predkosc;
int main(int argc, char *argv[]) { samochod fiat,opel,renault; motor kawasaki, honda; scigacz suzuki; suzuki.predkosc=250; cout<<endl<<suzuki.predkosc; kawasaki.predkosc=200; cout<<endl<<suzuki.predkosc; fiat.predkosc=170; cout<<endl<<"max predkosc fiat= "<<fiat.predkosc<<endl; opel.predkosc=210; cout<<endl<<"max predkosc opel= "<<opel.predkosc<<endl; renault.predkosc=70; cout<<endl<<"max predkosc renault= "<<renault.predkosc<<endl;
cout<<endl<<"max predkosc fiat= "<<fiat.predkosc<<endl;
system("PAUSE"); return EXIT_SUCCESS; }
|