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

可能重复:
“C ++的C子集” – >哪里没有? 例子 ?

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

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

 int typename = 1; 

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

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

 int array[n]; 

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

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

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

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

 int f(); 

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

说明:在C中, int f()被视为int f(...) (至少在第一个调用站点)。 如果您不希望f接受参数,则声明为int f(void)

一个从我的头脑 – C ++不支持默认int。