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

question-closed Działanie std::string

Object Storage Arubacloud
+1 głos
318 wizyt
pytanie zadane 21 lipca 2015 w C i C++ przez Patrycjerz Mędrzec (192,320 p.)
zamknięte 28 lipca 2015 przez Patrycjerz

Witam,

bardzo zaciekawiła mnie klasa std::string. Jak każdy wie, używa się jej, aby zapisać ciąg znaków, więc prosty przykład:

std::string napis = "OLA MA KOTA";

Ale zmienna napis jest normalnym obiektem klasy string. Jeśli tworzy się jej instancje i próbuje do niej się coś zapisać, to powinien być to także obiekt string. Napis w cudzysłowie chyba nim nie jest :) A może zastosowano tutaj operatory?

Nie wiem, więc pytam się fachowców :) Za odpowiedzi dziękuję.

komentarz zamknięcia: Problem rozwiązany

4 odpowiedzi

+5 głosów
odpowiedź 21 lipca 2015 przez daan Pasjonat (17,640 p.)
wybrane 21 lipca 2015 przez Patrycjerz
 
Najlepsza

Klasa string jest tak naprawde kontenerem, dynamiczną tablicą znaków :) Posiada przeładowany operator '=' który w odpowiedni sposób dodaje każdy element z tablicy typu char* do kontenera. Działanie tej klasy jest analogiczne np. do działania klasy vector i innych klas z biblioteki STL.

+2 głosów
odpowiedź 21 lipca 2015 przez Krawiec91 Pasjonat (19,600 p.)

Obiekt o nazwie napis jest instancją klasy std::string. W tym wypadku wykorzystałeś zdefiniowany dla tej klasy operator przypisania. Równie dobrze mógłbyś zrobić taki manewr:

std::string napis ("OLA MA KOTA");

czyli wywołanie konstruktora klasy string.
http://www.cplusplus.com/reference/string/string/

+1 głos
odpowiedź 21 lipca 2015 przez Magicone Nałogowiec (45,100 p.)
String to tak naprawdę tablica typu char(przedstawiona na wskaźnikach ofc.), dopisane do niej zostało kilka metod. :P
+1 głos
odpowiedź 21 lipca 2015 przez Dorion300 Szeryf (90,250 p.)
Użyto tutaj "przeciążenie Operatorów".

https://pl.wikibooks.org/wiki/C%2B%2B/Przeciążanie_operatorów
komentarz 21 lipca 2015 przez Patrycjerz Mędrzec (192,320 p.)
Przeciążanie operatorów znam, mogłeś to wynioskować z pytania. Nie widziałem tylko, czy użyto tego w tym przypadku, ale jednak tak :)
komentarz 22 lipca 2015 przez Szykem2 Nałogowiec (29,510 p.)
Coś mi się wydaje, że nie do końca rozumiesz przeciążenie operatorów i działanie konstruktorów.

Rozpatrzmy kod:

string str;

str = "ALA MA KOTA";

to tu jest użyte przeciążenie operatora = bo istniejącemu obiektowi przypisujesz jakąś wartość,

Natomiast string str = "ALA MA KOTA"; nie jest przeciążeniem operatora bo obiekt dopiero tworzysz. Tu jest wywoływany konstruktor czyli ta linika jest interpretowana jako: string str("ALA MA KOTA")

Podobne pytania

0 głosów
1 odpowiedź 1,220 wizyt
pytanie zadane 16 czerwca 2017 w C i C++ przez excavelty Bywalec (2,480 p.)
0 głosów
1 odpowiedź 115 wizyt
pytanie zadane 17 kwietnia 2019 w PHP przez Ksiaze Snu Nowicjusz (120 p.)
0 głosów
1 odpowiedź 1,061 wizyt
pytanie zadane 10 października 2018 w JavaScript przez Whatisit Początkujący (390 p.)

92,576 zapytań

141,425 odpowiedzi

319,650 komentarzy

61,961 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!

...