代码之家  ›  专栏  ›  技术社区  ›  Mike

是什么阻止C++成为C的严格超集?[副本]

c c++
  •  21
  • Mike  · 技术社区  · 14 年前

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

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

    5 回复  |  直到 12 年前
        1
  •  44
  •   Konrad Rudolph    14 年前

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

    int typename = 1;
    

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

        2
  •  21
  •   Alexander Rafferty    14 年前

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

    int array[n];
    

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

    int *array = new int[n];
      ...
    delete [] array;
    
        3
  •  11
  •   Jens Gustedt    14 年前

    有一个特别的 wiki 总结了许多问题的条目。

        4
  •  8
  •   Alexandre C.    12 年前

    简单示例,考虑以下声明:

    int f();
    

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

    说明:在C中, int f() 被当作 int f(...) (至少在第一个呼叫地点)。声明为 int f(void) 如果你不想 f 获取参数。

        5
  •  2
  •   Karel Petranek    14 年前

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