文章目录
1. 关键字
C++ 关键字是编程语言保留的单词,这些单词具有特定的含义,并在编译过程中被编译器识别和处理。由于关键字有特殊的用途,因此不能将它们用作标识符(变量名、函数名、类名等)。
- 控制语句关键字:用于控制程序的流程,例如条件判断、循环等。
- 数据类型关键字:用于定义变量和函数的类型。
- 存储类型关键字:用于指定变量的存储位置和生命周期。
- 类和对象相关关键字:用于面向对象编程,定义类、对象及其属性和方法。
- 异常处理关键字:用于处理程序运行时的异常。
- 其他关键字:提供各种其他功能,如命名空间、类型转换等。
分类 | 关键字 | 描述 |
---|---|---|
控制语句关键字 | if |
条件语句,用于根据条件表达式的结果执行代码块。 |
else |
与if 配合使用,用于条件为假时执行代码块。 |
|
switch |
用于根据一个变量的值执行不同的代码块。 | |
case |
在switch 语句中用于匹配变量的值。 |
|
default |
在switch 语句中用于处理所有未匹配的情况。 |
|
for |
循环语句,用于执行代码块多次,通常用于已知次数的循环。 | |
while |
循环语句,用于根据条件表达式重复执行代码块。 | |
do |
与while 配合使用,先执行代码块,再检查条件表达式。 |
|
break |
终止循环或switch 语句,并跳出语句块。 |
|
continue |
跳过当前循环迭代,继续下一次迭代。 | |
goto |
无条件跳转到标记位置,不推荐使用,因为会使代码难以维护。 | |
return |
用于从函数中返回值,并终止函数执行。 | |
数据类型关键字 | int |
整数类型。 |
float |
单精度浮点数类型。 | |
double |
双精度浮点数类型。 | |
char |
字符类型。 | |
void |
无类型,常用于函数无返回值。 | |
bool |
布尔类型,表示真或假。 | |
short |
短整数类型,通常为16位。 | |
long |
长整数类型,通常为32位或更长。 | |
signed |
有符号类型修饰符。 | |
unsigned |
无符号类型修饰符。 | |
wchar_t |
宽字符类型,通常用于Unicode字符。 | |
存储类型关键字 | auto |
自动类型推断,C++11 引入。 |
register |
建议将变量存储在寄存器中,实际使用由编译器决定。 | |
static |
指定变量在其作用域内保持其值和生命周期。 | |
extern |
声明变量或函数在另一个文件中定义。 | |
mutable |
允许常量成员在const 成员函数中被修改。 |
|
thread_local |
声明线程局部存储变量,每个线程有其独立实例。 | |
类和对象相关关键字 | class |
定义类。 |
struct |
定义结构体,默认访问权限为公有。 | |
union |
定义共用体。 | |
this |
指针,指向调用对象自身。 | |
public |
访问权限,公有成员。 | |
private |
访问权限,私有成员。 | |
protected |
访问权限,受保护成员。 | |
virtual |
声明虚函数,支持多态。 | |
friend |
声明友元,允许非成员函数访问私有和保护成员。 | |
explicit |
显式构造函数,防止隐式转换。 | |
new |
动态分配内存。 | |
delete |
释放动态分配的内存。 | |
operator |
重载运算符。 | |
sizeof |
计算对象或类型的字节大小。 | |
typename |
声明类型名称,特别是在模板中使用。 | |
异常处理关键字 | try |
用于捕获异常。 |
catch |
用于处理异常。 | |
throw |
用于抛出异常。 | |
其他关键字 | namespace |
定义命名空间,用于组织代码,避免命名冲突。 |
using |
引入命名空间或类型别名。 | |
inline |
建议编译器内联函数,减少函数调用开销。 | |
const |
声明常量或常量成员函数。 | |
volatile |
指示变量可能会被程序外因素修改,防止编译器优化。 | |
enum |
定义枚举类型。 | |
typedef |
为现有类型定义新的名称。 | |
template |
定义模板,用于泛型编程。 | |
constexpr |
用于在编译时计算常量表达式。 | |
nullptr |
空指针常量,取代旧的NULL 。 |
|
dynamic_cast |
用于安全地将基类指针转换为派生类指针。 | |
static_cast |
用于执行显式转换。 | |
reinterpret_cast |
用于重新解释类型的比特模式。 | |
const_cast |
用于移除const 或volatile 属性。 |
|
typeid |
用于在运行时获取对象的类型信息。 | |
export |
用于模板导出,C++20之前被弃用,现已被删除。 | |
import |
用于模块导入,C++20引入。 |
2. 控制语句关键字
if
:条件语句,用于根据条件表达式的结果执行代码块。
if (condition) {
// code to execute if condition is true
}
else
:与if
配合使用,用于条件为假时执行代码块。
if (condition) {
// code if condition is true
} else {
// code if condition is false
}
switch
:用于根据一个变量的值执行不同的代码块。
switch (variable) {
case value1:
// code for value1
break;
case value2:
// code for value2
break;
default:
// default code
}
case
:在switch
语句中用于匹配变量的值。
switch (variable) {
case value:
// code for case value
break;
}
default
:在switch
语句中用于处理所有未匹配的情况。
switch (variable) {
default:
// default code
}
for
:循环语句,用于执行代码块多次,通常用于已知次数的循环。
for (int i = 0; i < 10; i++) {
// code to execute
}
while
:循环语句,用于根据条件表达式重复执行代码块。
while (condition) {
// code to execute
}
do
:与while
配合使用,先执行代码块,再检查条件表达式。
do {
// code to execute
} while (condition);
break
:终止循环或switch
语句,并跳出语句块。
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
}
continue
:跳过当前循环迭代,继续下一次迭代。
continue:跳过当前循环迭代,继续下一次迭代。
goto
:无条件跳转到标记位置,不推荐使用,因为会使代码难以维护。
goto label;
// code
label:
// code to execute after jump
return
:用于从函数中返回值,并终止函数执行。
int function() {
return value;
}
3. 数据类型关键字
int
:整数类型。
int number = 10;
float
:单精度浮点数类型。
float number = 3.14;
double
:双精度浮点数类型。
double number = 3.1415926535;
char
:字符类型。
char letter = 'A';
void
:无类型,常用于函数无返回值。
void function() {
// code
}
bool
:布尔类型,表示真或假。
bool isTrue = true;
short
:短整数类型,通常为16位。
short number = 32767;
long
:长整数类型,通常为32位或更长。
long number = 2147483647;
signed
:有符号类型修饰符。
signed int number = -10;
unsigned
:无符号类型修饰符。
unsigned int number = 10;
wchar_t
:宽字符类型,通常用于Unicode字符。
wchar_t wideChar = L'A';
4. 存储类型关键字
auto
:自动类型推断,C++11 引入。
auto number = 10; // 编译器推断number为int类型
register
:建议将变量存储在寄存器中,实际使用由编译器决定。
register int number = 10;
static
:指定变量在其作用域内保持其值和生命周期。
static int count = 0;
extern
:声明变量或函数在另一个文件中定义。
extern int number;
mutable
:允许常量成员在const
成员函数中被修改。
class MyClass {
mutable int var;
public:
void modify() const {
var = 10;
}
};
thread_local
:声明线程局部存储变量,每个线程有其独立实例。
thread_local int number = 10;
5. 类和对象相关关键字
class
:定义类。
class MyClass {
int var;
public:
void method();
};
struct
:定义结构体,默认访问权限为公有。
struct MyStruct {
int var;
};
union
:定义共用体。
union MyUnion {
int intVar;
float floatVar;
};
this
:指针,指向调用对象自身。
class MyClass {
int var;
public:
void setVar(int var) {
this->var = var;
}
};
public
:访问权限,公有成员。
class MyClass {
public:
int var;
};
private
:访问权限,私有成员。
class MyClass {
private:
int var;
};
protected
:访问权限,受保护成员。
class MyClass {
protected:
int var;
};
virtual
:声明虚函数,支持多态。
class Base {
public:
virtual void display();
};
friend
:声明友元,允许非成员函数访问私有和保护成员。
class MyClass {
friend void myFriendFunction(MyClass &obj);
private:
int var;
};
explicit
:显式构造函数,防止隐式转换。
class MyClass {
public:
explicit MyClass(int var);
};
new
:动态分配内存。
int* ptr = new int;
delete
:释放动态分配的内存。
delete ptr;
operator
:重载运算符。
class MyClass {
public:
MyClass operator+(const MyClass &obj);
};
sizeof
:计算对象或类型的字节大小。
int size = sizeof(int);
typename
:声明类型名称,特别是在模板中使用。
template <typename T>
class MyClass {
T var;
};
6. 异常处理关键字
try
:用于捕获异常。
try {
// code that may throw an exception 可能抛出异常的代码
}
catch
:用于处理异常。
try {
// code that may throw an exception 可能抛出异常的代码
} catch (const std::exception &e) {
// code to handle the exception 处理异常的代码
}
throw
:用于抛出异常。
throw std::runtime_error("Error occurred");
7. 其他关键字
namespace
:定义命名空间,用于组织代码,避免命名冲突。
namespace MyNamespace {
int var;
}
using
:引入命名空间或类型别名。
using namespace MyNamespace;
using MyAlias = MyClass;
inline
:建议编译器内联函数,减少函数调用开销。
inline void myFunction() {
// code
}
const
:声明常量或常量成员函数。
const int var = 10;
void myFunction() const;
volatile
:指示变量可能会被程序外因素修改,防止编译器优化。
volatile int var;
enum
:定义枚举类型。
enum Color { RED, GREEN, BLUE };
typedef
:为现有类型定义新的名称。
typedef int myInt;
template
:定义模板,用于泛型编程。
template <typename T>
class MyClass {
T var;
};
constexpr
:用于在编译时计算常量表达式。
constexpr int square(int x) {
return x * x;
}
nullptr
:空指针常量,取代旧的NULL
。
int* ptr = nullptr;
dynamic_cast
:用于安全地将基类指针转换为派生类指针。
Derived* d = dynamic_cast<Derived*>(basePtr);
static_cast
:用于执行显式转换。
int i = static_cast<int>(3.14);
reinterpret_cast
:用于重新解释类型的比特模式。
int* p = reinterpret_cast<int*>(ptr);
const_cast
:用于移除const
或volatile
属性。
const int* ptr = &value;
int* modifiablePtr = const_cast<int*>(ptr);
typeid
:用于在运行时获取对象的类型信息。
typeid(obj).name();
import
:用于模块导入,C++20引入。
import module_name;