美文网首页
const关键字

const关键字

作者: _gentle | 来源:发表于2018-08-14 23:15 被阅读0次
    • const 修饰全局变量时会修改其链接属性为内部链接。如果想要覆盖这种链接可以使用extern关键字覆盖这种链接属性。例如
    const int a = 1;//内部链接
    extern const int a = 2; //外部链接
    

    但不要轻易的这么做,因为C++设计全局常量为内部链接的是有原因的。假如你在一个头文件(假设为constant.h)中申明了一系列的常量,工程的其他文件下引用constant.h。若全局常量的链接性为外部的,那么将有一个只能有一个文件包含constant.h,如果有多个文件包含,则会产生重定义的错误。因此其他文件必须使用extern来引用这个头文件中的常量,造成不便。因此假如你要使得一个常量为外部链接的,需要注意到这一点

    • const关键字修饰指针
    int* const p = &a;//指针不可修改
    const int* p = &b;//指针指向的内存区域不可修改
    
    • const 修饰成员变量时,必须在头文件中声明时直接进行初始化
    class A {
    public:
        const int a = 2;
    };
    
    • const修饰成员函数时,该函数内部不可以修改数据成员的值(mutable修饰的关键字除外)
    class A {
    public:
        void f() const {
        //  a = 2;//error
            int b = 2;//ok
            c = 4;//ok
        }
        int a;
         mutable int c = 3;
    };
    

    相关文章

      网友评论

          本文标题:const关键字

          本文链接:https://www.haomeiwen.com/subject/rbdkvftx.html