konstruktory sparamentryzowane w cpp

konstruktory sparamentryzowane w cpp
Samhain
  • Rejestracja:około 4 lata
  • Ostatnio:prawie 3 lata
  • Postów:15
0

Mam pytanie - po co są konstruktory sparametryzowane? Po co się je używa? Wiem, jak je tworzyć, ale kompletnie nie mogę sobie ułożyć w głowie ich potrzeby.

CE
  • Rejestracja:około 4 lata
  • Ostatnio:ponad 3 lata
  • Postów:48
0

@Samhain: Co rozumiesz przez sparametryzowany? Konstruktor przyjmujący argumenty?

_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:8 dni
0
Kopiuj
struct Point
{
   double x,y;
   Point():x(0),y(0) {}
   Point(double x,double y):x(x),y(y) {}
};

Z konstruktorem domyślnym: Point p; p.x=3; p.y=4;
Z drugim konstruktorem: Point p(3,4);
Mam nadzieje widzisz różnicę.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
B4mbus
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 2 lata
  • Postów:11
0

@Samhain: Zadaniem konstruktora jest poprawne skonstruowanie obiektu tak, żeby ten był gotowy do pracy przed jego użyciem. Niektóre typy danych muszą * przyjmować dane ze środowiska, żeby mieć sens - choćby taka klasa jak std::ifstream, która stanowi abstrakcję do czytania plików. Konstruktor "sparametryzowany" przyjmie choćby ścieżkę do pliku (dana ze środowiska), aby poprawnie ten obiekt skonstruować (w tym przypadku nawet wykonać jakieś akcje - otworzyć plik [RAII]), żeby potem można było z tego obiektu korzystać (e.g. czytać z pliku operatorem >>).

* dla rozjaśnienia - std::ifstream ma konstruktor domyślny, ale dużo nie podziałasz z domyślnie skonstruowanym ifstreamem

edytowany 3x, ostatnio: B4mbus
_13th_Dragon
Chrzani waść! ifstream ifs; ifs.open("c:\\temp\\data.txt");
B4mbus
No można se otworzyć w taki sposób, ale to psuje wzorzec RAII
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:około 9 godzin
  • Postów:4935
0

MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:6 dni
  • Lokalizacja:Warszawa
  • Postów:1454
1

Konstruktory takie na ogół służą do zrealizowania dependency injection, a w połączeniu z brakiem domyślnego konstruktora(czyli takiego bez parametrów) zabezpieczają programistę korzystającego z danego obiektu przez niepoprawnym/bezsensownym użyciem.


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.