Advertisement
kanciastopantalones

konstruktor/destruktor

Nov 14th, 2013
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.39 KB | None | 0 0
  1. Przekazywanie tablicy jednowymiarowej do funkcji
  2.  
  3. void sposob_1( int tablica[ 123 ] );
  4. void sposob_2( int tablica[] );
  5. void sposob_3( int * tablica );
  6.  
  7. przykad:
  8.  
  9. #include <iostream>
  10.  
  11. void wypelnijTablice( int t[], int iRozmiar )
  12. {
  13. std::cout << "Podaj " << iRozmiar << " liczb:" << std::endl;
  14. int i = 0;
  15. do
  16. {
  17. std::cin >> t[ i ];
  18. i++;
  19. } while( i < iRozmiar );
  20.  
  21. }
  22.  
  23. int main()
  24. {
  25. int moja_tablica[ 5 ];
  26. wypelnijTablice( moja_tablica, 5 );
  27. int i = 0;
  28. do
  29. {
  30. std::cout << moja_tablica[ i ] << ", ";
  31. i++;
  32. } while( i < 5 );
  33.  
  34. return 0;
  35. }
  36.  
  37. ----
  38.  
  39. Struktury danych
  40.  
  41. //struktura dla uytkownikw forum
  42. struct Uzytkownicy_DDT //deklaracja struktury
  43. { //opis struktury
  44. std::string nik;
  45. std::string haslo;
  46. short data_zalozenia_konta;
  47. std: string status;
  48. };
  49.  
  50. struct Uzytkownicy_DDT //deklaracja struktury
  51. {
  52. //opis struktur
  53. std::string nik;
  54. std::string haslo;
  55. short lp;
  56. std::string status;
  57. std::string rodzaj_konta;
  58. };
  59.  
  60. int main()
  61. {
  62. using namespace std;
  63. //Tworzenie obiektu struktury i wypenianie-------
  64. Uzytkownicy_DDT PiotrSzawdynski =
  65. {
  66. "PiotrSzawdynski",
  67. "!@#$%%^",
  68. 1,
  69. "Aktywny",
  70. "Admin"
  71. };
  72. /*WANE dla niektrych kompilatorw naley
  73. uy zapisu static Uzytkownicy_DDT PiotrSzawdynski =*/
  74. Uzytkownicy_DDT Pietrzuch =
  75. {
  76. "Pietrzuch",
  77. "@m@m$@#@",
  78. 24,
  79. "Aktywny",
  80. "Moderator"
  81. };
  82. /*inny sposb wprowadzania danych do
  83. obiektu*/
  84. //tworzenie obiektu
  85. Uzytkownicy_DDT Piotrus_Pan;
  86. /*wypenianie obiektu wartociami dla
  87. poszczeglnych typw danych*/
  88. Piotrus_Pan.haslo = "PanPiotr";
  89. Piotrus_Pan.lp = 927;
  90. Piotrus_Pan.nik = "Piotrus_Pan";
  91. Piotrus_Pan.rodzaj_konta = "Uzytkownik";
  92. Piotrus_Pan.status = "zablokowany";
  93.  
  94. //wywietlenie obiektw
  95. cout << "Oto lista uzytkownikow forum DDT"
  96. << endl << "Nik " << PiotrSzawdynski.nik
  97. << endl << "haslo " << PiotrSzawdynski.haslo
  98. << endl << "Nr usera " << PiotrSzawdynski.lp
  99. << endl << "Status " << PiotrSzawdynski.status
  100. << endl << "Rodzaj Konta "
  101. << PiotrSzawdynski.rodzaj_konta
  102. << endl
  103. << endl << "Nik " << Pietrzuch.nik
  104. << endl << "haslo " << Pietrzuch.haslo
  105. << endl << "Nr usera " << Pietrzuch.lp
  106. << endl << "Status " << Pietrzuch.status
  107. << endl << "Rodzaj Konta "
  108. << Pietrzuch.rodzaj_konta
  109. << endl
  110. << endl << "Nik " << Piotrus_Pan.nik
  111. << endl << "haslo " << Piotrus_Pan.haslo
  112. << endl << "Nr usera " << Piotrus_Pan.lp
  113. << endl << "Status " << Piotrus_Pan.status
  114. << endl << "Rodzaj Konta "
  115. << Piotrus_Pan.rodzaj_konta;
  116.  
  117. getch();
  118. return( 0 );
  119. }
  120.  
  121. ----\
  122.  
  123. Wskaniki
  124.  
  125. #include <iostream>
  126. #include <conio.h>
  127. using namespace std;
  128. int main()
  129. {
  130. int zmienna1 = 213;
  131. int tablica[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  132. struct
  133. {
  134. int liczba;
  135. long long duzaLiczba;
  136. } struktura;
  137. cout << "Adres zmienna1=" <<& zmienna1 << endl << endl;
  138. cout << "Adres tablica=" <<& tablica << endl;
  139. cout << "Adres tablica[0]=" <<& tablica[ 0 ] << endl;
  140. cout << "Adres tablica[1]=" <<& tablica[ 1 ] << endl << endl;
  141. cout << "Adres struktura=" <<& struktura << endl;
  142. cout << "Adres struktura.liczba=" <<&( struktura.liczba ) << endl;
  143. cout << "Adres struktura.duzaLiczba=" <<&( struktura.duzaLiczba ) << endl;
  144. getch();
  145. return( 0 );
  146. }
  147.  
  148.  
  149. przyklad
  150.  
  151. //Wskaniki pierwsze spojrzenie----------
  152. #include <iostream>
  153. #include <conio.h>
  154. int main()
  155. {
  156. using namespace std;
  157.  
  158. int liczba = 9;
  159. int * wsk_liczba; /*--deklaracja wskanika
  160. na int--*/
  161. wsk_liczba = & liczba; /* przypisanie wskanikowi
  162. adresu int */
  163. //dwa sposoby wywietlenia wartoci liczba
  164. cout << "Zmienna liczba = " << liczba
  165. << "\ni *wsk_liczba jako zmienna liczba = "
  166. << * wsk_liczba
  167. << endl;
  168. //dwa sposoby wywietlenia adresu zmiennej
  169. cout << "Adres liczby = " << & liczba
  170. << "\ni wsk_liczba jako adres liczby = "
  171. << wsk_liczba
  172. << endl;
  173. //zmiana wartoci za pomoc wskanika
  174. * wsk_liczba = * wsk_liczba + 1;
  175. cout << "Liczba = " << liczba;
  176.  
  177. getch();
  178. return 0;
  179. }
  180. //---------------------------------------
  181.  
  182. Dynamiczne zarzdzanie pamici new i delete
  183.  
  184. wskaznik1 = new typ_zmiennej;
  185. wskaznik2 = new typ_zmiennej[ ilosc_elementow_danego_typu ];
  186.  
  187. delete wskaznik;
  188. delete[] wskaznik_do_tablicy;
  189.  
  190.  
  191. ------------------
  192.  
  193. Klasy (obiekty)
  194.  
  195. class NazwaTwojejKlasy
  196. {
  197. //w tym miejscu piszemy definicje typw, zmienne i funkcje jakie maj nalee do klasy.
  198. }; //tutaj rednik jest bardzo wany!
  199.  
  200.  
  201. ---
  202. class TwojaKlasa
  203. {
  204. };
  205.  
  206. int main()
  207. {
  208. TwojaKlasa nazwaZmiennej;
  209. return( 0 );
  210. }
  211.  
  212. ---
  213.  
  214.  
  215. konstruktor
  216.  
  217.  
  218. class NazwaTwojejKlasy
  219. {
  220. public:
  221. NazwaTwojejKlasy(); //To jest definicja konstruktora
  222. };
  223.  
  224. NazwaTwojejKlasy::NazwaTwojejKlasy()
  225. {
  226. //Tu inicjujemy wartoci zmiennych klasy
  227. }
  228.  
  229.  
  230.  
  231.  
  232. przyklad
  233.  
  234. #include <iostream>
  235. #include <conio.h>
  236. using namespace std;
  237. class JakasKlasa
  238. {
  239. int a;
  240. char b;
  241. std::string c;
  242. public:
  243. JakasKlasa();
  244. };
  245.  
  246. JakasKlasa::JakasKlasa()
  247. {
  248. cout << "Klasa utworzona, wartosci zmiennych: " << endl;
  249. cout << "a = " << a << endl;
  250. cout << "b = '" << b << "'" << endl;
  251. cout << "c = \"" << c << "\"" << endl;
  252. a = 123;
  253. b = 'x';
  254. c = "napis";
  255. cout << "Wartosci zmiennych po zainicjowaniu w konstruktorze: " << endl;
  256. cout << "a = " << a << endl;
  257. cout << "b = '" << b << "'" << endl;
  258. cout << "c = \"" << c << "\"" << endl;
  259. }
  260.  
  261. int main()
  262. {
  263. JakasKlasa tZmienna;
  264. getch();
  265. return( 0 );
  266. }
  267. Takie rozwizanie jest oczywicie poprawne, niemniej jednak czasami zachodzi potrzeba zainicjowania zmiennej w trakcie tworzenia klasy, a nie po jej utworzeniu. Aby to zrobi, naley uy nastpujcego zapisu:
  268. C/C++
  269. #include <iostream>
  270. #include <conio.h>
  271. using namespace std;
  272. class JakasKlasa
  273. {
  274. int a;
  275. char b;
  276. std::string c;
  277. public:
  278. JakasKlasa();
  279. };
  280.  
  281. JakasKlasa::JakasKlasa()
  282. : a( 123 )
  283. , b( 'x' )
  284. , c( "napis" )
  285. {
  286. cout << "Klasa utworzona, wartosci zmiennych: " << endl;
  287. cout << "a = " << a << endl;
  288. cout << "b = '" << b << "'" << endl;
  289. cout << "c = \"" << c << "\"" << endl;
  290. }
  291.  
  292. int main()
  293. {
  294. JakasKlasa tZmienna;
  295. getch();
  296. return( 0 );
  297. }
  298.  
  299.  
  300.  
  301.  
  302.  
  303. desturtro
  304.  
  305. class NazwaTwojejKlasy
  306. {
  307. public:
  308. ~NazwaTwojejKlasy(); //To jest definicja destruktora
  309. };
  310.  
  311. NazwaTwojejKlasy::~NazwaTwojejKlasy()
  312. {
  313. //Tu wykonujemy wszystkie operacje jakie maj si wykona automatycznie tu przed zwolnieniem pamici zajmowanej przez klas.
  314. }
  315.  
  316. ---
  317.  
  318. #include <iostream>
  319. #include <conio.h>
  320. using namespace std;
  321.  
  322. class KlasaCL
  323. {
  324. public:
  325. KlasaCL();
  326. ~KlasaCL();
  327. };
  328.  
  329. int main()
  330. {
  331. KlasaCL * tKlasa;
  332. cout << "Rezerwuje pamiec za pomoca new" << endl;
  333. tKlasa = new KlasaCL;
  334. cout << "Wchodze do bloku {" << endl;
  335. {
  336. KlasaCL tKlasa;
  337. }
  338. cout << "Wyszedlem z bloku }" << endl;
  339. cout << "Zwalniam pamiec, ktora zostala zarezerwowana za pomoca new" << endl;
  340. delete tKlasa;
  341. getch();
  342. return( 0 );
  343. }
  344.  
  345. KlasaCL::KlasaCL()
  346. {
  347. cout << "=> Konstruktor wywolany!" << endl;
  348. }
  349.  
  350. KlasaCL::~KlasaCL()
  351. {
  352. cout << "=> Destruktor wywolany!" << endl;
  353. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement