Что касается различий в реализации языка - и я думаю, что вам нужно быть осторожным с такими вещами, как управление памятью, объявления в заголовках и т. Д. - я думаю, что самая сложная вещь, с которой нужно иметь дело, - это дополнительная перегрузка специальных символы в синтаксисе. После многих лет написания кода на C # больше всего я спотыкаюсь о том, что *
, &
и <>
бездельничают. Моя первая реакция заключается в том, что код C ++ очень похож на большое регулярное выражение.
Я уверен, что как только вы используете его некоторое время, это уходит, но я больше не делаю достаточно C ++, чтобы чувствовать себя комфортно, когда я точно знаю, какой символ использовать в каждом случае - я передаю указатель или ссылка на этот объект?
Другой большой недостаток, при чтении чужого кода, это перегрузка операторов. Я знаю, что вы можете сделать это в C #, но я редко видел это там. Возможно, что-то изменилось, но я видел много перегрузок операторов в C ++, где +/-
приводил к некоторым странным эффектам. Помимо некоторых довольно очевидных побед (таких как конкатенация строк), я думаю, что это действительно сомнительная функция, без которой я мог бы обойтись - как в C ++, так и в C #.