美文网首页
C++的Const修饰符几种用法

C++的Const修饰符几种用法

作者: 呵呵哒_8731 | 来源:发表于2018-03-09 19:58 被阅读0次

    1、const修饰符可以声明常量。

    const int b=100; 
    

    2、const修饰符可以声明指针,当const在(*)号左边,意味着指针指向的数不能修改,即指针不能指向另一个值。当const在(*)号右边时,意味着指针不能修改,例如a++等操作,但是指针指向的值可以修改。

    int d=10;
    const int*a=&b;    [1]不能进行(*a)++的操作,但是可以进行*a++操作
    int const *a=&b;   [2]同上
    int* const a=&b;   [3]不能进行a++的操作
    const  int* const  a=&b;  [4]同上
    

    3、const修饰符修饰函数参数时,一方面可以防止输入的参数被更改,另一方面可以进行类型检查,如果输入的数类型不符合则报错。

    4、const修饰符在函数后面时,可以为函数重载提供参考。同一个函数名和相同的参数列表,如果后面加了const和没有const是两个函数。

    5、const在函数声明前面:

    const int fun1() //这个其实无意义,因为参数返回本身就是赋值。
    const int * fun2() //调用时 const int *pValue = fun2(); 
                        //我们可以把fun2()看作成一个变量,即指针内容不可变。
    int* const fun3()   //调用时 int * const pValue = fun2(); 
                         //我们可以把fun2()看作成一个变量,即指针本身不可变。
    

    6、const在类中时,当修饰成员变量时,成员变量会变成成员常量,不能被更改,且只能在初始化列表时被赋值。当修饰成员函数时,该成员函数不能改变类的成员变量,也不能调用非const的成员函数。

    7、将Const类型转化为非Const类型的方法
    采用const_cast进行转换。
    用法:const_cast <type_id> (expression)
    该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。
    · 常量指针被转化成非常量指针,并且仍然指向原来的对象;
    · 常量引用被转换成非常量引用,并且仍然指向原来的对象;
    · 常量对象被转换成非常量对象。

    8、const能节省空间
    const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。
    编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

    相关文章

      网友评论

          本文标题:C++的Const修饰符几种用法

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