有没有什么可以在C中完成而不是在C ++中以相反的方式完成

时间:2010-12-09 21:32:41

标签: c++ c

参考C和C ++。我想知道其中一种语言是否有可能,而另一种语言是不可能的。

我对这个主题的一些想法:

  • 我的第一个想法是他们因为他们都被翻译成集会,实际上应该可以用两种语言做我们想要的一切。

  • 但是犹豫不决,因为C ++是一种更高级别的语言,所以它可能不会暴露创造C所做的所有可能性,C可能不会暴露所有可能的汇编等等。因为语言在我看来更高,所以更容易程序员,但计算能力下降。这是对的吗?

  • 反过来说C ++中有什么可能而不是C- 我不是指程序员的代码效率和可用性(意识到多态性,继承等),而是想知道C中是否存在任何不可能的事情。

  • 另一个要强调C语言可能在C ++中可能的事实是使用C ++的C ++包装器(这被认为是纯C ++编程吗?) (C ++是用C语言构建的吗?)

我很乐意澄清这个问题。

谢谢!

4 个答案:

答案 0 :(得分:14)

从某种意义上说,他们都是图灵完整的语言,答案是否定的。

答案 1 :(得分:2)

C和C ++都是完整的,所以你可以在它们中表达任何抽象计算。具体的计算(摆弄硬件位)是一个完全不同的故事,所以例如你无法在Ruby中实现通常被认为是操作系统的东西。

C和C ++都足够接近金属,但您可以使用它们在硬件位级编程。

此外,C ++不会隐藏C不能隐藏的任何内容,至少如果你想处理所有毛茸茸的细节。

答案 2 :(得分:1)

两者都是图灵完成的,所以两者都可以解决同样的问题。

然而,C ++ 几乎是C的超集。你可以用C语言编写的任何内容都可以用非常类似的方式用C ++编写,通常根本不需要修改,或者偶尔需要进行小的修改。反之亦然 - 你可以用C ++编写的东西很难(但不是不可能)直接转换为C.例如面向对象的编程(多态,多重继承等),异常等等。

答案 3 :(得分:0)

不能在C ++中执行此操作,但可以在C

int* ptr = malloc(50 * sizeof(int));

C ++使您明确地转换void *

当然在C中,任何与面向对象无关的事情都无法完成。就像是通过一个圆孔敲击方形钉。