Так, близько року тому я був у тому ж човні, що і ви: самоучка c # dev, яка відчувала потребу в навчанні C ++. Зрозуміло, я зупинявся і починав кілька разів. З моєї третьої спроби я нарешті просунувся через неї.
Важливо розуміти, що з точки зору методологій C ++ та C # ви, швидше за все, витратите багато часу на розуміння того, що насправді означає методи маніпулювання даними через покажчики та посилання , а також коли та як їх використовувати за даних обставин.
Приємно в C ++, що розподіл стеків об'єктів здебільшого є простим, і ви повинні розподіляти об'єкти таким чином, якщо ваша програма відповідатиме вимогам, визначеним цим методом. В іншому випадку ви покладаєтесь на покажчики на швидкість, ефективність та швидке очищення. Я рекомендую прочитати це: http://www.parashift.com/c++-faq-lite/, оскільки це дасть вам багато технічного розуміння того, як C ++ працює під кришкою.
Дозвольте навести приклад:
У C ++ існує така реалізація конструктора, відома як "список ініціалізації", що відрізняється від ініціалізації членів класу в тілі конструктора. Чому? Оскільки, якщо тип ініціалізації не є примітивним, компілятор фактично створить декілька і непотрібних копій об'єкта, що створюється, коли він виділяється в тілі ctor. Це може потенційно знизити продуктивність, залежно від компілятора, а також від масштабованих вимог програми.
Знаєте, що таке делегат? Ну, в C ++ він відомий як покажчик функції . Цю мову спочатку досить важко опанувати, але якщо ти хочеш бути приголомшливим ... це обов'язково потрібно.
C # легко ... дуже просто.