const用法总结

作者: saviochen | 来源:发表于2017-06-29 22:03 被阅读52次

    const概述

    const是指使用C和C++中常见关键字,在C语言中,主要用于定义变量为常类型以及修饰参数与返回值,而在C++中,还可以修饰函数的定义,定义类的成员函数。常类型的变量或对象的值时不能被更新的。

    一般而言,const有以下几个方面的特点:

    • 1、定义const常量,具有不可变形。例如:
    const int MAX = 100;
    int array[MAX];
    
    • 2、进行类型检查,使编译器对内容有更多了解,消除了一些隐患。例如:
      void f(const int i){...}编译器就会知道i是一个常量,不允许修改。

    • 3、为函数重载提供参考。

    class A
    {
        void f(int i){};
        void f(int i)const {};
    };
    
    • 4、节省空间。const定义常量从汇编角度来看,只是给出了对应的内存地址,而不像#define一样给的是立即数,所以const定义的常量在运行过程中只有一份复制品,而#define定义的常数在内存中则有由若干复制品。

    • 5、提供程序效率。编译器通常不为普通const常量分配存储空间,而是将其保存在符号表中,这使得他们成称为编译期间的常量,没有了存储与读内存的操作。使得它们的效率很高。

    引申:什么情况下使用const关键字?

    • 1、修饰一般常量,例如
    int const x = 2; 
    const int x = 2;
    
    • 2、修饰常数组。定义或说明一个常数组,例如
    int const a[8] = {0, 1, 2, 3, 4, 5, 6, 7};
    const int a[8] = {0, 1, 2, 3, 4, 5, 6, 7}q;
    
    • 3、修饰常对象
    class A;
    const A a;
    A const a;
    
    • 4、修饰常指针。
    const int * A;//const修饰指向对象
    int const * A;//const修饰指向对象
    int * const A;//const修饰指针
    const int * const A;//const修饰指向对象与指针
    
    • 5、修饰常引用,表示不可通过该别名修改变量值。需要注意的是,常引用可以绑定到右值上。
    int x = 10;
    const double& cdr = 1.0;
    const int& y = x;
    
    • 6、修饰函数的常参数。
    void fun(const int i);
    
    • 7、修饰编译器的返回值。表示返回值不可修改。
    const int fun();
    const Myclass fun2();
    
    • 8、修饰类成员函数。在调用时,不能修改类对象成员非静态成员变量的值。采用thiscall函数调用方式,因此不可修饰静态函数(调用规约是__cdecl或__stdcall)。关于函数调用可参考C++中函数的调用方式
    class ClassName
    {
    public:
        int fun() const;
    };
    
    • 9、在另一文件中引用const变量。变量在另一文件中不能被再初始化。
    extern const int i;
    

    相关文章

      网友评论

        本文标题:const用法总结

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