问:有人说C语言99%的代码是可以包含在c++中,那剩下的1%是什么?
好多博客都说c++是C语言的超集,但c++又不能完全兼容C语言,那不兼容的那部分到底是什么?
SSUG团队 答:
实际上,区别已经在官方的 c++ 标准中写出来了:[diff.iso],在此,我简单阐述其中的几点:
- 变量等不能使用 c++ 中的新的 keyword 来命名。
- 形如 ‘x’ 的字符字面量的类型是 char。
- 字符串字面量的类型从 char[] 变为 const char[],也就是说char* p = “abc”; 这类代码在 c++ 中是编译错误。
- 对于代码 struct X { struct Y { int a; } a; };,c 中可以直接使用 struct Y,c++ 中必须使用 X::Y。
- c++ 中 main 函数不能递归调用。
- 在 c 中,struct A { int a } 和 struct B { int a } 这两个类型是兼容的,在 c++ 中则是不同的类型。
- 在 c 中,void * 可以隐式转换到 T *(这里的 T 指任意类型),c++ 中必须要显式转换。
- c++ 移除了 register,关键字 auto 在 c++ 中的含义与 c 中的不同。
- int f() 在 c++ 中表示 int f(void),c 中表示 int f(unknown)。
- K&R 式的函数定义在 c++ 中是废除的,如int add(a, b) int a, b; { return a + b; }
- 还想知道更多?可点上面 c++ 标准的链接查看。(注意是英文)
发表回复