概述:

C++ 是一种广泛使用的、通用的、面向对象的编程语言,它支持过程化编程、数据抽象、面向对象编程和泛型编程等多种编程范式。C++ 是在 C 语言的基础上发展起来的,它增加了许多新的特性,如类、继承、多态、模板、异常处理、命名空间等。

以下是 C++ 的一些基本特点:

特点 描述
面向对象 C++ 支持面向对象编程(OOP),通过类(class)和对象(object)的概念。
继承 一个类可以从另一个类继承,从而重用代码并扩展功能。
多态 通过虚函数(virtual functions)和继承,C++ 支持运行时多态,允许不同的对象对同一消息做出不同的响应。
模板 C++ 提供了模板(templates),允许程序员编写适用于多种数据类型的通用代码。
异常处理 C++ 引入了异常处理机制,用于处理程序运行时的错误情况。
命名空间 C++ 支持命名空间(namespaces),用于避免名称冲突和组织代码。
标准库 C++ 标准库提供了大量的函数和类,用于处理常见的编程任务,如字符串处理、文件操作、内存管理等。
与C语言兼容 C++ 是 C 语言的超集,这意味着任何有效的 C 程序也是有效的 C++ 程序(但可能不是最优的 C++ 程序)。

以下是一个简单的 C++ 程序示例,用于输出 “Hello, World!”:

1
2
3
4
5
6
#include <iostream>

int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}

在该示例中,#include <iostream> 指令告诉编译器包含标准输入输出流库。int main() 是程序的入口点。std::cout 是一个输出流对象,用于将文本发送到标准输出(通常是屏幕)。<< 是一个插入运算符,用于将数据插入到输出流中。std::endl 是一个操纵符,用于在输出中插入一个新行。最后,return 0; 表示程序正常退出。

对C的扩充:

下面是一个简化的表格,展示了C++在非面向对象方面对C语言的主要扩充点:

扩充点 C++特性 C语言对应/比较
类型安全性 强类型检查 弱类型检查,依赖程序员注意
输入输出流 iostream 标准I/O库(如stdio.h
内存管理 newdelete mallocfree
引用(Reference) 变量别名 指针操作
函数重载 允许同名不同参数函数 不支持
缺省参数 允许函数参数有默认值 不支持
内联函数 提高函数调用效率 无直接对应
命名空间 组织代码,避免命名冲突 全局作用域,可能导致冲突
运算符重载 允许重载运算符 不支持
条件编译 #ifdef, #ifndef #if, #else, #endif
宏定义 #define #define
预处理撤销 #undef 无直接对应
模板(Templates) 泛型编程 无直接对应
异常处理 try, catch, throw 无直接对应,使用错误码

C++的关键字是编程语言中预先保留的标识符,用于定义语言的结构和语法。在C++中,这些关键字不能被用作变量名、函数名或其他标识符的名称。以下是C++(不包括C++11新增的关键字)中的一部分主要关键字,按照不同的功能分类进行简述:

数据类型关键字:

基本数据类型 描述
bool 布尔类型,用于表示逻辑值(true或false)
char 字符类型,用于存储字符值
int 整型,用于存储整数
float、double、long double 浮点型,用于存储小数
signed、unsigned 用于指定整数类型是有符号还是无符号的
short、long 用于指定整数类型的长度
void
复合数据类型 描述
class 用于定义类
struct 用于定义结构体
union 用于定义联合体
enum 用于定义枚举类型

控制语句关键字:

循环语句 描述
for 用于执行固定次数的循环
while 用于在条件为真时重复执行代码块
do…while while类似,但循环体至少会执行一次
条件语句 描述
if 用于根据条件执行不同的代码块
else if一起使用,用于指定条件为假时执行的代码块
switch 用于根据表达式的值选择不同的代码块执行
case switch一起使用,用于指定表达式可能的值
default switch一起使用,用于指定表达式不匹配任何case时执行的代码块
跳转语句 描述
break 用于跳出当前循环或switch语句
continue 用于跳过当前循环的剩余部分,直接进入下一次循环
goto 无条件跳转到指定的标签位置(在现代编程中很少使用)
return 用于从函数中返回值并结束函数执行

存储类型关键字:

存储关键字 描述
auto 尽管在C++11中有更多用途,但在C++98/03中主要用于自动存储期变量的声明
extern 用于声明在其他文件中定义的变量或函数
register 建议编译器将变量存储在寄存器中(但现代编译器通常忽略此建议)
static 用于声明静态变量或静态成员函数

其他关键字:

另外的常用关键字 描述
sizeof 用于计算数据类型或变量的大小(以字节为单位)
typedef 用于为数据类型定义别名
volatile 用于修饰变量,表示该变量可能在程序外部被意外地改变(如多线程或硬件操作)
namespace 用于定义命名空间,以避免命名冲突
using 用于在当前作用域中引入命名空间中的名称
friend 用于声明友元函数或友元类,它们可以访问类的私有和保护成员
explicit 用于防止类构造函数被用于隐式类型转换
mutable 用于修饰类的非静态成员变量,即使在const成员函数中也可以修改它

c++11新引入:

关键字 描述
alignas 用于指定变量或类型的对齐要求
alignof 用于获取变量或类型的对齐要求
char16_t 16位字符类型
char32_t 32位字符类型
constexpr 声明编译时常量表达式
decltype 用于类型推导,返回表达式的类型
final 禁止类被继承,或禁止虚函数被重写
noexcept 指定函数不会抛出异常
nullptr 表示空指针常量
override 检查子类虚函数是否重写了某个基类虚函数
static_assert 在编译时进行断言
thread_local 声明变量的线程局部存储期