Znam język C # dość dobrze (samoukiem, niestety) i potrzebuję programowania w C ++ dla aplikacji Windows. Byłem w stanie znaleźć mnóstwo informacji dla programistów C ++ uczących się języka C #, ale nie byłem w stanie znaleźć dużo na temat uczenia się języka C ++, kiedy już znasz język C #. Czy ktoś spotkał się z dobrym podsumowaniem podstaw?
MSDN ma porównanie, ale nie jest bardzo szczegółowe.
Mogę poskładać kilka źródeł, ale zorientowałem się, że coś tam jest - po prostu nie mogę tego znaleźć. Dzięki za pomoc.
Odpowiedzi:
Wątek w języku C ++ dla programistów Java jest bardzo podobny i powinien być przydatny, zwłaszcza post Mark Byer:
Prawdopodobnie najważniejszą rzeczą, o której należy pamiętać, jest zrozumienie różnicy w technikach zarządzania pamięcią między C # / Java i C ++ .
Jeden z moich profesorów pochodził z języka Java i uczył wstępnego kursu C ++, myśląc, że to będzie ciasto. Nic, co wyjaśnił, nie miało dla nikogo sensu. Wszędzie miał przecieki pamięci. Jego wskaźnik arytmetyki był okropny. Nigdy nie dotarł do części programu OOP (dzięki Bogu). Praktycznie nic, co pokazał, nie skompilowałoby się. Nie rozumiał, że
char[]
potrzebował wartownika\0
. Nie bądź taki jak on.źródło
char[]
wtedy , prawda?char[]
rzadko jest używane w C ++, nie oznacza, że nie jest nauczane lub że nie powinno się go uczyć.char[]
nadal należy pamiętać, ponieważ C ++ jest nadzbiorem języka C i konieczne jest , aby został poprawnie zrozumiany, jeśli w ogóle można się go nauczyć.std::string
, a jeśli musisz współdziałać z interfejsem API C, to po toc_str()
jest. Nie ma potrzeby, aby programiści radzili sobie z tymchar[]
lub NULL w żadnym z nich. Obsługa ciągów w stylu C jest całkowicie i całkowicie przestarzała dla każdego możliwego zastosowania, z wyjątkiem interakcji ze starym kodem C, który jest doskonale obsługiwanyc_str()
.char[]
dobrze, ponieważ wszystkie zastosowaniachar[]
są złe. Twój profesor prawdopodobnie byłby absolutnie w porządku, gdyby utknął w C ++ zamiast C.Niestety, nie ma zbyt wiele podstawowych rzeczy na temat C ++, więc nie chciałbym mieć większych nadziei. Ponadto niewiele wiadomo o języku C #, który można nawet zdalnie przenieść na język C ++, więc nie spodziewałbym się, że istniałby jakiś konkretny materiał obejmujący ten kąt. Musisz nauczyć się od zera.
źródło
cout
i proste sposoby, aby osiągnąć cele prosteNie ma na to łatwej poprawki, C ++ nie jest szczególnie trudny, ale nie jest łatwy dla początkujących.
Poleciłbym poczytać o podstawach programowania w C (aby uzyskać podstawy dla rzeczy, które znajdziesz na niskim poziomie), a następnie nauczyć się języka STL, a następnie artykułów takich jak Scott Meyers. Oto jeden na początek, ponieważ pokazuje, jak powinieneś pisać nowoczesne C ++ w porównaniu do C-z-klasami.
źródło
reading up on C programming
. Myślę, że przynosi to więcej szkody niż pożytku i przekazuje pogląd, że C i C ++ to języki, które należy wspólnie studiować.delete
a tablice C i inne rzeczy są odradzane w C ++ niż oni, co przypisuję NIE wyraźnemu studiowaniu C. C jest stosunkowo prosty, możesz dość szybko dowiedzieć się, co robi kod.malloc
ifree
. Wielki deweloper C ++ w końcu będzie chciał o nich wiedzieć. Zaczynanie od nich to zupełnie inna sprawa.Nie jestem pewien, czy nadal szukasz materiałów, ten artykuł znalazłem kilka miesięcy temu. To nie jest książka (tylko 53 strony). Wprowadzenie mówi wszystko:
This is a somewhat short guide to the important things to know if you are a C# programmer and find yourself needing or wanting to work in C++
http://geekswithblogs.net/mikebmcl/archive/2012/02/02/c-to-c-ndash-a-somewhat-short-guide.aspx
Jest też post o aktualizacji:
http://geekswithblogs.net/mikebmcl/archive/2012/02/14/c-to-cndasha-somewhat-short-guide-update-1.aspx
Miłej nauki :)
źródło
źródło
Myślę, że dobrze, że nie znajdziesz zbyt wielu samouczków od C # do C ++. Prawdopodobnie mogą zmiażdżyć twój mózg. To tak, jakby najpierw nauczyć się jeździć na motocyklu, a potem przejść na rower (nie do końca odpowiednia anologia, ale masz pomysł). Lepiej jest wziąć świeżą książkę o C ++. Ponieważ znasz już koncepcje OOP, możesz albo pominąć długie wprowadzenie do koncepcji OOP (są one przeznaczone dla osób migrujących z C do C ++). Lub od razu sięgnij po książkę informacyjną przeznaczoną dla początkujących lub średnio zaawansowanych lub średniozaawansowanych.
źródło
Poleciłbym udać się do Rosetta Code i porównać oba. Podczas gdy tam jesteś, trzymaj pod ręką link idiomów C ++ i spróbuj je znaleźć. Następnie poświęć trochę czasu na obszar wskaźnika / odniesienia / pamięci / destruktora. Potem dowiedz się o preprocesorze - naprawdę może być twoim przyjacielem, jeśli chodzi o ukrywanie brzydek, trochę mi brakuje. Wreszcie STL.
źródło
Mniej więcej rok temu byłem na tej samej łodzi, co ty: samoukałem c # dev, który czuł potrzebę nauki C ++. Oczywiście, zatrzymałem się i zacząłem wiele razy. Przy trzeciej próbie w końcu udało mi się.
Konieczne jest zrozumienie, że pod względem metodologii C ++ i C # prawdopodobnie poświęcisz dużo czasu na zrozumienie, jakie metody manipulacji danymi za pomocą wskaźników i referencji naprawdę oznaczają, a także kiedy i jak z nich korzystać w danych okolicznościach.
Zaletą C ++ jest to, że alokacja stosu obiektów jest w większości dość prosta i powinieneś alokować obiekty w ten sposób, jeśli twój program spełni wymagania określone w tej metodzie. W przeciwnym razie polegasz na wskaźnikach prędkości, wydajności i szybkiego czyszczenia. Zalecam przeczytanie tego: http://www.parashift.com/c++-faq-lite/, ponieważ da Wam DUŻO techniczne zrozumienie, jak C ++ działa pod maską.
Dam ci przykład:
W C ++ istnieje ta implementacja konstruktora znana jako „lista inicjująca”, która różni się od inicjowania elementów klasy w treści konstruktora. Czemu? Ponieważ, chyba że inicjowany typ jest prymitywny, kompilator faktycznie utworzy wiele niepotrzebnych kopii tworzonego obiektu, gdy zostanie przydzielony w ciele ctora. Może to potencjalnie zmniejszyć wydajność, w zależności od kompilatora, a także skalowanych wymagań aplikacji.
Wiesz, kim jest delegat? Cóż, w C ++ jest znany jako wskaźnik funkcji . Na początku ten język jest dość trudny do opanowania, ale jeśli chcesz być niesamowity ... to zdecydowanie wymagany.
C # jest łatwe ... bardzo łatwe.
źródło
Uwierz mi, wybierz dobrą książkę o C ++ (jest o wiele więcej, po prostu wyszukaj) i zacznij się uczyć ...
źródło