我是一位经验丰富的C#开发人员,我应该知道在c/c ++中有效编码的内容是什么?

Arr*_*n S 6 c c# c++

我在大学的c/c ++方面有一点经验,但多年没有参与其中.即使考虑到ac/c ++职位,我还需要知道哪些事情?

dri*_*iis 17

指针算术可能位于列表的顶部.此外,很好地理解非托管世界中的内存管理会有所帮助 - 例如记住删除new构造的内容.

  • 更重要的是,使用类来做新的并删除. (10认同)
  • 或者更好的是,知道为什么你应该避免使用new/delete来支持RAII类型 (8认同)

luk*_*uke 15

  • 很抱歉听到这个,非常方便. (2认同)

Jer*_*fin 9

我不同意你收到的很多建议.你应该不是集中在手动内存管理.在C中很难避免手动内存管理.但是,大多数C++代码几乎不需要使用手动内存管理.手动内存管理在大量代码中被大量过度使用,导致许多容易避免的问题.

研究的第一个也是最重要的是标准库.它与.NET有很大的不同(说得客气一点).我的直接建议是获取Accelerated C++的副本,并完成它.它专为完全符合您职责的人设计(即学习C++,但已经拥有至少一种其他语言的经验),对于这种情况,我很确定没有更好的书可用.

编辑:(主要是回应肯尼的评论) - 特别是如果你维护现有的代码,你很可能会被困在学习任何理智的人可能宁愿避免的各种不愉快.同样,根据您加入的团队,即使在新代码中,您也可能会遇到丑陋.不幸的是,如果没有相当多的背景和语言经验,可能根本不清楚要寻找什么.


Gre*_*g D 6

从实际的角度来看,我会说优先考虑的是你在对象生命周期的手动管理中给自己一个锻炼.C#和.Net世界中的节省时间是垃圾收集器提供的神奇功能.一个人仍然需要管理托管世界中的内存,但这是一个更简单的任务,并不一定与维护对象所有权和生命周期的心智模型有关.

在C/C++中,您将重新进入毛茸茸的内存管理,生命周期管理和对象所有权的世界.