• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c++ pytania do oop

Object Storage Arubacloud
+1 głos
335 wizyt
pytanie zadane 7 kwietnia 2021 w C i C++ przez Eriss69 Gaduła (4,470 p.)
Czesc ostatnio mam wiele pytan wiec zrobie liste i prosze o pomoc i udzielnie dobrej odp:

1.Jak przewidziec jaki konstruktor do danej klasy stworzyc? (Moze ktos wymysli mi zadanie i na dc je mu rozwiaze lub mnie podszkoli troche :) )

2.Wskaźnik this wykorzystuje sie w niestatycznych metody klasy o co z tym chodzi?

3. czy moge prosic o jakies proste zadnia z klas ? nie mam pomysłu jak iść dalej i nie stac w miejscu ciagle.. bo czytac moge ciagle ale co z tego jak nie bede pisac zadnych programow :/
komentarz 7 kwietnia 2021 przez Oscar Nałogowiec (29,290 p.)

Na początku studiów (to było bardzo dawno temu) jeden z wykładowców z jakiś tam podstaw programowania podał nam definicję typu - co to jest typ zmiennej. Brzmiała ona jakoś tak: "typ to jest zbiór wartości, jakie może przyjąć zmienna i zestaw operacji jakie można na niej wykonać". W językach obiektowych (których wtedy nie było) jest to w zasadzie definicja klasy.

 

1. Takie, które wypełniają wszystkie niezbędne informacje w klasie. Tak by to zakończeniu konstruktora obiekt był gotowy do użycia. No chyba, że interfejs obiektu przewiduje "niegotowość" - ale to też trzeba ustawić. smiley

 

2. Wkaźnik this praktycznie wykorzystuje się rzadko, w zasadzie w dwóch przypadkach - gdy występuje niejednoznaczność/przysłanianie nazw - np nazwa parametru metody jest identyczna z nazwą pola lub ewentualnie gdy obiekt jako całość jest gdzieś przekazywany wewnątrz własnej metody.

1 odpowiedź

+2 głosów
odpowiedź 12 kwietnia 2021 przez profesorek96 Szeryf (91,420 p.)
wybrane 12 kwietnia 2021 przez Eriss69
 
Najlepsza

Zacznijmy od tego że funkcja wewnątrz klasy nazywana jest metodą, zaś zmienna wewnątrz klasy to pole lub atrybut. Zasadniczo atrybuty maja przechowywać stan obiektu zaś metody pozwalać modyfikować stan czyli wartości pól.

Konstruktor to specjalna metoda która w przypadku języka C++ nazywa się tak samo jak klasa oraz nie zwraca żadnych argumentów. Metoda ta jest wywoływana w momencie tworzenia obiektu. Jej zadaniem jest przygotowanie obiektu do życia. To właśnie w konstruktorze przypisujemy wartości polom, rezerwujemy pamięć itp. Metoda działającą odwrotnie do konstruktora jest destruktor. Metoda która nazywa się tak samo jak klasa tylko przed nazwą jest znak tyldy (~). Metoda ta jest wywoływana w momencie niszczenia obiektu. Zadaniem jej jest posprzątanie po obiekcie. Jeśli w konstruktorze rezerwowaliśmy pamięć lub otwieraliśmy plik to powinniśmy zwolnić te zasoby w destruktorze.

Jeśli nie napiszemy w ciele klasy ani konstruktora ani destruktora kompilator i tak je doda. Należy zapamiętać że destruktor może być tylko jeden zaś konstruktorów wiele. Konstruktory można przeciążać, inaczej mówiąc tworzyć konstruktory różniące się liczbą argumentów lub ich typem.

Zasadniczo wyróżniamy konstruktor domyślny moja_klasa(). Konstruktor taki nie ma argumentów, konstruktor argumentowy moja_klasa(int a) oraz konstruktor kopiujący. W standardzie C++ 11 został dodany konstruktor przenoszący. 

Przykład:

#include <iostream>
using namespace std;
class mojaKlasa
{
		public:
		mojaKlasa()
		{
			cout<<"Konstruktor"<<endl;	
		}
		~mojaKlasa()
		{
			cout<<"Destruktor"<<endl;
		}
};
int main() {
	mojaKlasa A;
	return 0;
}

Zwróć uwagę że ja tylko w main tworzę obiekt, zarówno konstruktor jak i destruktor same się wywołują. Ja ich nigdzie nie wywołuje.

Jeśli chodzi o this to zasadniczo jest to wskaźnik na konkretny obiekt tej klasy. To coś takiego że będąc w pudełku, widział bym co jest na zewnątrz, widział bym samego siebie. Używa się tego głownie wtedy kiedy jakaś nazwa się pokrywa. Przykład:

#include <iostream>
using namespace std;
class mojaKlasa
{
		public:
		int a;
		mojaKlasa(int a)
		{
			this->a=a;//parametr konsturktora 
			//ma ta sama nazwe co pole
			cout<<"Konstruktor"<<endl;	
		}
		~mojaKlasa()
		{
			cout<<"Destruktor"<<endl;
		}
};
int main() {
	mojaKlasa A(5);
	return 0;
}

Należy pamiętać że this to wskaźnik dlatego używamy -> a nie operatora kropki. Kolejnym przykładem użycia this jest przypadek kiedy chcemy przekazać obiekt jako całość tak jak pisze @Oscar.

 

Ze swojej strony polecam Ci lekturę dwóch książek:

https://helion.pl/ksiazki/myslenie-obiektowe-w-programowaniu-wydanie-v-matt-weisfeld,myobp5.htm#format/d

https://helion.pl/ksiazki/c-w-24-godziny-wydanie-vi-rogers-cadenhead-jesse-liberty,cpp246.htm#format/d

Podobne pytania

–5 głosów
1 odpowiedź 419 wizyt
pytanie zadane 25 lutego 2018 w C i C++ przez Krystek102 Bywalec (2,440 p.)
0 głosów
1 odpowiedź 216 wizyt
pytanie zadane 25 stycznia 2023 w C i C++ przez benny13 Obywatel (1,150 p.)
0 głosów
1 odpowiedź 416 wizyt
pytanie zadane 2 stycznia 2023 w C i C++ przez benny13 Obywatel (1,150 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...