Powrót do C++ (z C#)

0

No więc stało się, że postanowiłem siąść do C++. Nie na dłużej, ale potrzeba mi czasem umiejętności pisania w nim. Uczyłem się go trochę kiedyś (jeszcze byłem w gimnazjum i mało rozumiałem) ale potem przerwałem naukę i po dwóch latach przerwy (miałem dziewczynę :D ) siadłem do C#. No i teraz już w C# drugi rok, także troche mnie dzieli od C++. I w sumie nie za bardzo wiem, jak mam się zabrać za to. Nie chce robić żadnych kursów "od początku", w sumie szukam po prostu różnic między C# a C++ a dokładniej w myśleniu.

Do jakich zagadnień powinienem zajrzeć? Wiem że w C++ były wskaźniki, a także przekazywanie przez referencję lub kopię. Czyli gdy przekazuje obiekty klas, to powinienem przekazywać przez referencję(a może przez wskaźnik?) żeby nie tworzyć nowego obiektu w pamięci?
Teraz ciężko mi sobie to wyobrazić bo w C# to mamy domyśne typy które są skalarne czy jak tam to się nazywało a także struktury i przekazując je do funkcji, operujemy na kopii - bo to po prostu zbiór danych. Natomiast jak mamy obiekt klasy to wiadomo.

Kolejna sprawa, bo w google nie mogłem wyszukać dwóch dwukropków. Tu mały offtop, niby google ma wyszukiwanie po wyrażeniach regularnych więc wpisałem :: i i tak nie znalazłem tego operatora czy jak mu tam. :: - co to właściwie jest, czy jest to to samo, czym jest kropka w C#? Z drugiej strony kropki też widzę gdzieś tu w jakimś projekcie w c++ tzn "wincl.hInstance = hInstance;"
I także widzę coś takiego jak -> co najbardziej mi odpowiada tej kropce w C#.

Co jeszcze powinienem wiedzieć i z czym się zapoznać?

1

:: to oprator zakresu, który pozwala na wydobycie nazwy z danej przestrzeni nazw.
. to operator odwołania się do pól/metod obiektu jakiejś klasy
-> to operator dereferencji i odwołania się do pól/metod obiektu jakiejś klasy, który jest wskazywany wskaźnikiem
wskaznik->metoda() oznacza tyle samo co (*wskaznik).metoda()
nawias przy (*wskaznik) wynika z tego że * ma niski priorytet
~ to operator negacji bitowej
? to operator instrukcji warunkowej, taki krótszy if, na przykład:

int x = warunek_logiczny ? wartość_jeśli_prawda : wartość_jeśli_fałsz;
0

wyobraź sobie to tak, że w C++ zarówno class jak i struct zachowują się jak struct w C#, czyli są przekazywane przez wartość.
przekazanie parametru przez referencję & to jak przekazanie w C# ze słowem ref albo out.

ubuntuser napisał(a)

a ~ ?
to samo co w C#.

0

Ok dzięki, najlepiej też będzie jak gdzieś znajdę Symfonię Grębosza i chociaż pobieżnie przejrzę, może wtedy jeszcze nasuną mi się jakieś pytania.
Co do znaczku tylda ~ to mój błąd, zapomniałem że to jest w C# bo do tej pory jeszcze nie przyszło mi używać operatorów bitowych.

1

Jako, że Walentynki tuż, tuż - prezent.

Na stronie

http://developer.qt.nokia.com/resources/getting_started

na samym dole jest akapit : Read the Official Qt Book

poleca on oficjalną książkę do biblioteki QT. Drugie wydanie możemy kupić, pierwsze pobrać gratis. Książka ta (1 wydanie przynajmniej) posiada od strony 451, dodatek B o jakże przepięknym tytule: "Introduction to C++ for Java and C# Programmers". Polecam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1