什么阻止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。