В моем университете большинство моих занятий были на Java. Я также недавно изучил C # (и среду Visual Studio) во время летней практики. Сейчас я беру вступление к уроку компьютерной графики, и аспирант, преподающий урок, предпочитает, чтобы мы использовали C ++ для доступа к привязкам OpenGL через GLUT.
У кого-нибудь есть хорошие ресурсы о том, как сделать хороший переход с Java / C # на C ++? Очевидно, что указатели будут большой проблемой, но есть ли другие вещи, на которые я должен обратить внимание? Любые учебники, руководства и т. Д. Будут очень полезны!
Спасибо!
Да, я столкнулся с той же ошибкой. Университет, как правило, опирался на Java, а затем позволял вам выбирать язык, с которым вы хотели работать во время проектов.
Лучший способ - просто прыгнуть. Начните с малого, сделайте маленькие шаги, и просто вещи Google, которые сбивают вас с толку, когда вы туда попадаете. Также найдите проекты, которые выпустили свой исходный код. Посмотрите, как они структурируют свои программы. В основном, просто возиться с понятиями. В Интернете много информации.
Сделайте это забавным и возьмите книгу по разработке игр на C ++, чтобы она не стала слишком быстрой.
Вот некоторые места, которые я нашел полезными во время обучения
Если вы уже знаете Java / C #, я бы порекомендовал перейти непосредственно к C вместо C ++. Согласно веб-сайту, GLUT имеет те же привязки для C, что и для C ++, поэтому вы должны быть готовы. В любом случае, лучший способ выучить C - это купить и прочитать копию «языка программирования C», сесть за стол с компилятором C и заставить свои вещи работать.
Эффективный C ++ Скотта Мейерса - отличная книга, которая поможет вам выучить C ++. Дает вам обзор языка и вводит много ключевых понятий, которые вы будете использовать при разработке практически любой программы на C ++.
Эффективный C ++ Скотта Мейерса - отличная книга, которая поможет вам выучить C ++. Дает вам обзор языка и вводит много ключевых понятий, которые вы будете использовать при разработке практически любой программы на C ++.
Я люблю эту книгу во всех трех изданиях, и это была одна из книг в классе, который у меня был как старший в UT, но это просто не стартовая книга. Вы можете чувствовать себя комфортно в C ++ с гораздо меньшим, хотя вы, конечно, не будете чувствовать себя с компилятором, пока не прочитаете работу Майера.
Я не знаю, печатается ли он по-прежнему, но я нашел Navigating C ++ полезной, но мне также очень понравились указатели из Pascal. Конечно, я забыл, что 15 лет назад вы должны были узнать, что такое ООП, а теперь это немного более предположительно. Так что, возможно, Майер не вне линии. Мысли?
В Википедии есть статья о сравнениях между Java и C ++ .
Вам не нужно беспокоиться о проверенных исключениях в C ++, но вам нужно знать о правильности констант .
Есть два основных различия: синтаксис и управление памятью.
В C ++ у вас есть указатели, которые являются более мощными (или менее мощными в зависимости от вашей интерпретации мощности) ссылок на объекты, о которых вы уже знаете из Java.
В Java вы можете сделать это:
Thing mything = new Thing(); // mything is an object reference
mything.method();
В C ++ вы бы сделали это:
Thing * mything = new Thing(); // mything is an object pointer
mything->method();
delete mything;
Синтаксическая разница очевидна: «->» вместо «.» при вызове метода объекта из указателя на объект. В C ++ вы должны явно освободить память, когда закончите с объектом. В конце концов вы делаете то же самое в C ++ и Java, создаете экземпляры объектов и вызываете методы, ставите бесполезные точки с запятой в конце каждой строки и т. Д. Не удивительно ли, что Python становится таким популярным ?:
mything = Thing() # mything is whatever I want it to be
mything.method()
Пролистывая любой наполовину приличный текст на C ++, вы сможете заполнить остальные детали.
Я также полностью рекомендую « Размышления» Брюса Экеля в C ++ . Фантастическая книга для уже опытных программистов, которые хотят проникнуть в мышление C ++.
Он достаточно любезен, чтобы сделать электронные версии своих книг доступными бесплатно .
Я настоятельно рекомендую всем, кто изучает C ++, читает Страуструпс "Язык программирования C ++". У Майерса и Экеля отличные вещи, но ничто не сравнится с обучением у парня, который решил, каким должен быть язык и как он намеревался его использовать.
У меня была точно такая же проблема. Единственная книга, которую мне удалось найти, была «Pro Visual C ++ 2005 для разработчиков на C #» Дина С. Виллса . Это хорошее чтение с отличными примерами, и я думаю, что угол, с которого выходит книга, вероятно, то, что вы ищете.
Вам нужно совершенно другое чувство для обработки памяти. Также подумайте о том, чтобы освободить все, что вам больше не нужно. В Java и C # вы просто отпускаете свои объекты, и память восстанавливается - вы не можете сделать это в CPP