C ++程序员遇到的问题和错误

时间:2011-06-07 16:51:39

标签: c++ c coding-style paradigms

如果您是熟悉C语言的C程序员或C ++程序员,您能否告诉我您从C ++程序员那里注意到的最常见的错误/模式/风格是什么?例如,您是否注意到C程序员编写的C程序与C ++程序员编写的C程序之间存在差异?如果你能提供一个列表,说明C ++程序员对C的主要误解,我将非常感激。

我想学习C,但是虽然C ++背景有帮助,但我担心它也可能会受到伤害。我有这个奇怪的假设,除了一些关键字和库,我不需要学习任何其他东西,因为我知道C ++。我觉得这个假设很糟糕,因为我确实认识到C ++!= C,但有时当我在C ++中使用C库或者从其他人那里维护传统的程序C ++时,差异会变得模糊。

顺便说一句,我不是问C中没有的C ++功能,或者我们/他们是否使用“malloc”而他/我们使用“new”。

感谢。

4 个答案:

答案 0 :(得分:3)

我经常看到的一件事是正确释放分配的内存。尤其与包含动态分配的内存的结构相关联使用C ++,会自动调用析构函数,如果编写得当,它们会清理相关对象。使用C,你必须记住要么释放分配给结构的所有内存,要么记得调用某种为你做的破坏函数。

答案 1 :(得分:1)

我不确定我会称这是一个“错误”,但是一个经验丰富的C ++程序员必须使用C可能会创建很多类似于类和虚函数表的东西。

这不一定是坏事,因为你当然可以在C中进行面向对象的编程,但对于特定的问题可能有点过分。

答案 2 :(得分:1)

我不能从个人经验中说出来,但我相信你可能会遇到一些微妙的问题,例如引用(将&作为变量名称前置)作为函数参数,enum s不是像C ++中那样的完全限定类型,涉及返回void指针的内存函数的东西......就像那样。

答案 3 :(得分:-1)

当然,当你找到惯用的C代码时,它看起来类似于惯用的C ++代码,除了你必须破解所有缺少的语言功能并实现你自己的半版本的代码。例如,宏 - >模板/内联函数。 void * pointers->遗产。函数指针 - >函数对象。例外 - > goto&错误代码。