54 lines
2.4 KiB
Plaintext
54 lines
2.4 KiB
Plaintext
![]() |
\b;Wska<6B>niki (dla specjalist<73>w)
|
|||
|
CBOT u<>ywa odwo<77>a<EFBFBD> do \l;klas\u cbot\class; i \l;tablic\u cbot\array;. Ka<4B>da zmienna w rzeczywisto<74>ci zawiera odwo<77>anie do instancji. Instancja natomiast zawiera pola klasy. Wiele wska<6B>nik<69>w mo<6D>e odwo<77>ywa<77> si<73> do tej samej instancji. Wska<6B>nik \c;\l;null\u cbot\null;\n; nie odwo<77>uje si<73> do niczego. Instancj<63> mo<6D>na por<6F>wna<6E> do teczki, a wska<6B>nik do trzymaj<61>cego. Za ka<6B>dym razem gdy potrzebujemy nowej teczki, tworzymy now<6F> instancj<63> z trzymaj<61>cym. Ale teczka mo<6D>e by<62> trzymana przez wi<77>cej ni<6E> jedn<64> osob<6F>. Osoba nie trzymaj<61>ca <20>adnej teczki to wska<6B>nik na \c;\l;null\u cbot\null;\n;.
|
|||
|
|
|||
|
Przyk<EFBFBD>ad:
|
|||
|
\c;\s;{
|
|||
|
\s; MojaKlasa item1();// utw<74>rz now<6F> instancj<63>
|
|||
|
\s; // wskazywan<61> przez item1
|
|||
|
\s; MojaKlasa item2; // utw<74>rz wska<6B>nik null
|
|||
|
\s; item2 = item1; // skopiuj wska<6B>nik,
|
|||
|
\s; // item2 i item1 wskazuj<75>
|
|||
|
\s; // teraz t<> sam<61> instancj<63>
|
|||
|
\s; item1.a = 12; // zmodyfikuj instancj<63>
|
|||
|
\s; // wskazywan<61> przez item1 (i item2)
|
|||
|
\s; message(item2.a); // wy<77>wietla liczb<7A> 12
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
W przypadku przekazania instancji \l;klasy\u cbot\class; jako parametru funkcji, funkcja otrzymuje wska<6B>nik do tej instancji. Oznacza to, <20>e w przypadku modyfikacji instancji wewn<77>trz funkcji, zostanie zmodyfikowana instancja podana przy wywo<77>aniu funkcji jako parametr.
|
|||
|
|
|||
|
\c;\s;void Test( MojaKlasa item )
|
|||
|
\s;{
|
|||
|
\s; item.a = 12; // zmodyfikuj oryginaln<6C> instancj<63>
|
|||
|
\s; item = new MojaKlasa(); // nowa instancja lokalna
|
|||
|
\s; item.a = 33; // zmodyfikuj instancj<63> lokaln<6C>
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
Wywo<EFBFBD>anie funkcji \c;Test()\n;<3B>:
|
|||
|
\c;\s;{
|
|||
|
\s; MojaKlasa toto();
|
|||
|
\s; Test(toto);
|
|||
|
\s; message(toto.a); // wy<77>wietla 12
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
Instancja zawieraj<61>ca pole \c;a = 33\n; jest wskazywana tylko przez nowoutworzon<6F> instancj<63> \c;item\n; wewn<77>trz funkcji \c;Test\n;. Na ko<6B>cu funkcji \c;Test\n; ta instancja wskazywana przez \c;item\n; jest automatycznie usuwana.
|
|||
|
|
|||
|
Funkcja mo<6D>e zwr<77>ci<63> instancj<63><6A>:
|
|||
|
\c;\s;MojaKlasa Test2( )
|
|||
|
\s;{
|
|||
|
\s; MojaKlasa item = new MojaKlasa();
|
|||
|
\s; item.x = 33;
|
|||
|
\s; return item;
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
W taki spos<6F>b nale<6C>y wywo<77>ywa<77> funkcj<63>:
|
|||
|
\c;\s;{
|
|||
|
\s; MojaKlasa toto;
|
|||
|
\s; toto = Test2(); // toto b<>dzie zawiera<72> wska<6B>nik do
|
|||
|
\s; // instancji utworzonej przez Test2()
|
|||
|
\s; message(toto.a); // wy<77>wietla 33
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
\t;Zobacz r<>wnie<69>
|
|||
|
\c;\l;class\u cbot\class;\n;, \c;\l;new\u cbot\new;\n;
|
|||
|
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
|