C to C++:从一种语言转换到另一种语言

Ara*_*and 5 c c++ language-features

可能重复:
经验丰富的C程序员的C++教程.

我经常使用多种语言编程,最近一直在使用C++.基本上我的类只是纯C代码的包装.几乎像一个带有相关方法的结构.这为我提供了我想要的数据封装和隐私.我有一个小的层次结构,我只是勉强使用继承.

我熟悉OO概念,并且在我需要了解这方面的特定概念时知道要使用哪些搜索术语.然而,正如我在编程世界中所发现的那样,通常真正有用的语言特性对于新手或新手来说是隐藏的,我需要的有用位已经被编写并且位于某个可以自由使用的库中可用(大部分时间是框架的一部分 - 就像在.NET中一样).

你会建议用什么途径来获得C++中的这些重要知识,并阻止自己重新发明轮子(糟糕).

Edw*_*nge 9

这是使用C++的错误方法.你可以更好地获取Accelerated C++的副本并阅读它.是的,这是一本初学者书,但除非你想继续将C++视为对象C,否则你需要关注C++程序员如何做事而不是仅仅坚持你已经知道的事情.你需要从头开始,在C++中建立一个良好的基础.

  • 不是_I_写一个快速排序算法.我的C++实现与我的C版本看起来非常不同.你实际上已经指出了一个很好的例子,为什么那些继续将它们视为同一种语言的人注定会失败. (7认同)
  • @Noah:一个优秀的C程序员可以通过引入一点C++来编写更好的程序(正如Aran显然已经完成的那样).那不是注定要失败的.这并不意味着他得到了全部的好处,这当然并不意味着他已经准备好与其他C++程序员一起工作,或者使用完整功能的C++代码.但是,它也没有任何内在错误,并且作为开发人员体验中的进化阶段,它不应被谴责或嘲笑为"使用C++的错误方式".鼓励这是一个不起眼的开始.游泳池治疗的深层不是唯一的方法. (4认同)
  • @Tony:C是一种简单的语言.要学习它,你要学习pritimve类型,陈述等等......然后你就把事情拼凑在一起*.C++*不能那样工作.*在C++中,我们使用满足特定条件并执行任务的黑盒子.在学习`new []`之前,你应该学会使用`std :: vector`,因为这个框比`new []`更有用,更安全,更实用.这并不意味着你永远不应该学习`new []`,但在学习过程中肯定不需要它; 事实上,它最终到来了.所以这种"C,C与类,C与模板等......"的方法是倒退的. (4认同)
  • @Noah:是的,我建议:在经常忙碌,人手不足的团队中,程序员必须通过采用一些有前途的新技术来自学.否则,他们会停滞不前.管理工资程序员谁使可疑的开发方案工作,搬东西向正确的方向,即使它的增量:事实上,他们可能会喜欢的东西增加了在谁愿意在一个新的立即重写一切一些未试过的外部"专家"拉动的风险语言.C++是C的近乎超集:它有时可以很聪明地利用它. (3认同)
  • @Tony - Accelerated C++与任何"深层次"相去甚远.正如你的建议,人们自己也会对C++有所伤害.您不会通过将其视为不同的语言来有效地学习新语言.就像我不希望通过将其视为C++一样进入C#,没有人应该考虑通过将其视为C来跳转到C++.Accelerated C++在处理像C++这样的C++方面具有坚实的基础.这是一本非常容易阅读的书,在初学者层面,经验丰富的开发人员应该可以通过使用它来快速赶上.我不推荐TMP书. (2认同)