Table of Contents

C++特性

一般来说现代C++最低语言标准是C++11


自动类型推断

自动类型推断使用auto关键字,auto关键字曾有其他的意思,现在已被弃用。自动类型推断在声明变量的时候使用,编译器根据初始值确定变量的类型,变量类型确定后就不会再改变。

内联函数

内联函数使用inline关键字声明,内联函数会在编译期间,用函数体替换掉函数调用,好处就是运行时不再需要函数寻址,速度更快,坏处是编译出的程序体积会更大。内联函数的特性决定了它不能递归。内联函数可以定义在头文件中,不会在链接时造成冲突。函数体直接定义在类声明内部的函数被认为是内联函数,不管有没有inline修饰符。

*.inl是inline函数文件:全是inline函数的头文件

断言

断言使用assert关键字。

函数特征符

因为函数可以重载,所以特征符就是能将同名的重载函数区分开来的符号,包括参数列表和一些函数修饰符,const修饰符被认为是函数特征符的一部分,也就是说同名、同函数列表的常函数和非常函数被认为是不同的,可以同时存在。函数的返回值不能将函数区分开来,所以返回值不算特征符。

枚举

枚举类型、强枚举类型、枚举类

枚举类型就是由enum声明的普通枚举类型,其存在一个不安全的问题,就是所有的普通枚举类型都是由整数表示的,所以容易混淆,比如Atype::A==Btype::A;强枚举类型就是枚举类,其由enum class声明,在判等的时候,不光会检查整数值是否相等,还会检查是否属于同一个枚举类,比如Atype::A!=Btype::A,这样更安全

noexcept

保证不会抛出异常

constexp

表明一个函数(等)的返回值是一个常量,用于编译器优化

for循环迭代容器的简便写法

// 以下代码由AI生成
 
for (元素类型 变量 : 容器) {
    // 在循环体中使用变量
}
 
#include <iostream>
 
int main() {
    int arr[] = {1, 2, 3, 4, 5};
 
    for (int num : arr) {
        std::cout << num << " ";
    }
 
    return 0;
}