C是C++的子集吗?

引入

很多人都认为C是C++的子集,但严格来说并不是,下面给出几个例子。

例子

1. void*类型

在C语言中,void*可以隐式转换为任何指针类型,但在C++语言中不合法!
在这里插入图片描述

C合法

2. 字符字面值

在C语言中,字符字面值是int类型,而在C++语言中,字符字面值是char类型。
C++
C

3. 字符串字面值

这是一个很常见的错误,在C语言中,字符串字面值是char[N]类型,而在C++语言中,字符串字面值是const char[N]类型。
C++
C
注意:在较低版本的VS中,char* str = "string"可以通过编译,但这不是良好的编写风格,具体请参考编译器文档:https://docs.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance?view=vs-2019https://docs.microsoft.com/en-us/cpp/build/reference/zc-strictstrings-disable-string-literal-type-conversion?view=vs-2019

参考

http://www.stroustrup.com/bsfaqcn.html#C-is-subset
https://cppreference.com

相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页