存储说明符:

    • auto(C++11中不再是说明符)

    用于类型推断
    int a = 5;
    auto b = a;

    • register

    用于在声明中指示寄存器存储。而在C++11中,它只是显示地指出变量是自动的。

    • static
    • extern
    • thread_local (C++11新增的)

    thread_local指出变量的持续性与其所属线程的持续性相同。生命周期就是线程的生命周期。

    • mutable

    即使结构(或类)变量为const,其某个成员也可以被修改。

    cv-限定符

    • const
    • volatile

    告诉编译器不要进行某种优化

    mutable举例子:

    d的const限定符禁止程序修改d的成员变量,但score成员是mutable说明符使得score不受这种限制。

    1. struct data
    2. {
    3. char name[30];
    4. int score;
    5. };
    6. const data d = {"hell", 0};
    7. strcpy(d.name, "world"); //not allow
    8. d.score = 11; //allow