什么阻止C ++成为C的严格超集?

时间:2010-09-23 09:36:41

标签: c++ c

  

可能重复:
  “C subset of C++” -> Where not ? examples ?

我知道C ++不是C的严格超集。什么语言特性阻止C ++成为C的超集?

5 个答案:

答案 0 :(得分:44)

房间里的大象:以下是有效的C但不是有效的C ++。

int typename = 1;

替换您最喜欢的C ++保留字。

答案 1 :(得分:21)

C ++也不支持可变长度数组,其中:

int array[n];

在C中有效,但在C ++中无效。以上的C ++版本将是:

int *array = new int[n];
  ...
delete [] array;

答案 2 :(得分:11)

有一个特殊的wiki条目,总结了很多问题。

答案 3 :(得分:8)

简单的例子,请考虑这个声明:

int f();

这是有效的C,但无效的C ++:f(3, 2, -5, "wtf");

说明:在C中,int f()被视为int f(...)(至少在第一个呼叫站点)。如果您不希望int f(void)获取参数,请声明为f

答案 4 :(得分:2)

一个从头到尾 - C ++不支持默认的int。