Skip to content

C和C++的不同之处

CC++ 之间的相似点:

  • 两种语言的语法相似。
  • 两种语言的代码结构相同。
  • 两种语言的编译过程类似。
  • 它们共享相同的基本语法。几乎所有C的运算符和关键字在C++中也存在,并且作用相同。
  • C++的语法相比C稍微扩展,但基本语法相同。
  • 两者的基本内存模型都非常接近硬件。
  • 两种语言中都存在相同的堆栈、堆、文件作用域和静态变量的概念。

CC++ 之间的不同点:

  • C++通常被视为C的超集。C++也被称为“带类的C”。这一点在C++最初创建时几乎是正确的,但随着时间的推移,两种语言都发生了变化,C添加了许多在当时的C++版本中找不到的特性,或者仍未出现在任何版本的C++中。尽管如此,C++仍然主要是C的超集,增加了面向对象编程异常处理、模板编程和更广泛的标准库。

以下是C和C++之间一些更明显和一般的区别的表格。语言及其版本之间还有许多更微妙的差异。

C C++
C由Dennis Ritchie于1969年至1973年间在AT&T Bell Labs开发。 C++由Bjarne Stroustrup于1979年开发。
C不支持多态、封装和继承,这意味着C不支持面向对象编程。 C++支持多态封装继承,因为它是一种面向对象编程语言。
C(主要)是C++的子集。 C++(主要)是C的超集。
C中的关键字数量: * C90: 32 * C99: 37 * C11: 44 * C23: 59 C++中的关键字数量: * C++98: 63 * C++11: 73 * C++17: 73 * C++20: 81
C支持过程式编程 C++被称为混合语言,因为C++支持过程式面向对象编程范式
数据和函数在C中是分开的,因为它是一种过程式编程语言。 数据和函数在C++中被封装在对象中。
C不支持信息隐藏。 数据通过封装进行隐藏,以确保数据结构和操作符按预期使用。
C支持内置数据类型。 C++支持内置和用户定义的数据类型。
C是一种函数驱动的语言,因为C是一种过程式编程语言。 C++是一种面向对象的语言,因为它是面向对象编程的。
C不支持函数和运算符重载。 C++支持函数和运算符重载。
C是一种函数驱动的语言。 C++是一种面向对象的语言。
C中的函数不能定义在结构体内部。 C++中的函数可以在结构体内部使用。
C中没有命名空间功能。 C++使用命名空间来避免名称冲突。
标准输入输出头文件是stdio.h 标准输入输出头文件是iostream.h
C不支持引用变量。 C++支持引用变量。
C不支持虚函数和友元函数。 C++支持虚函数友元函数
C不支持继承。 C++支持继承。
C关注的是方法或过程,而不是数据。 C++关注的是数据,而不是方法或过程。
C提供了malloc()calloc()函数用于动态内存分配,并使用free()进行内存释放。 C++提供了new操作符用于内存分配,并提供了delete操作符用于内存释放。
C不直接支持异常处理。 C++支持异常处理
scanf()和printf()函数用于C中的输入/输出。 cin和cout用于C++中的输入/输出
C结构体没有访问修饰符。 C++结构体有访问修饰符。
C编程语言中没有严格的类型检查。 C++中进行严格的类型检查。因此,许多在C编译器中运行良好的程序在C++编译器中会产生许多警告和错误。
C不支持重载。 C++支持重载。
C99及以后的版本允许使用联合体进行类型混淆。 类型混淆使用联合体在C++中是未定义行为(除非在非常特定的情况下)。
命名初始化器可以无序出现。 命名初始化器必须与结构体的数据布局匹配。
文件扩展名是“.c”。 文件扩展名是“.cpp”或“.c++”或“.cc”或“.cxx”。
元编程:宏 + _Generic() 元编程:模板(宏仍然受支持但不推荐使用)。
C中有32个关键字。 C++中有97个关键字。