Итак, около года назад я был в той же лодке, что и вы: самоучка c # dev, которая чувствовала необходимость изучать C ++. Конечно, я остановился и начал несколько раз. С третьей попытки я наконец-то с этим справился.
Необходимо понимать, что с точки зрения методологий C ++ и C # вы, вероятно, потратите много времени на понимание того, какие методы манипулирования данными с помощью указателей и ссылок действительно означают , а также когда и как их использовать в данных обстоятельствах.
Хорошая вещь в C ++ состоит в том, что выделение стека объектов по большей части довольно просто, и вы должны размещать объекты таким образом, если ваша программа будет соответствовать требованиям, указанным в этом методе. В противном случае вы полагаетесь на указатели скорости, эффективности и быстрой очистки. Я рекомендую прочитать это: http://www.parashift.com/c++-faq-lite/ поскольку это даст вам МНОГО технического понимания того, как C ++ работает под капотом.
Позволь мне привести пример:
В C ++ существует эта реализация конструктора, известная как «список инициализации», который отличается от инициализации членов класса в теле конструктора. Зачем? Поскольку, если инициализируемый тип не является примитивным, компилятор фактически создаст несколько ненужных копий объекта, создаваемого при размещении в теле ctor. Это может потенциально снизить производительность в зависимости от компилятора, а также от масштабируемых требований приложения.
Знаете, что такое делегат? Ну, в C ++ это называется указателем на функцию . Этот язык поначалу довольно сложен в освоении, но если вы хотите быть крутым ... он определенно необходим.
C # легко ... очень легко.