笔记三:const 在变量、函数、指针中的使用

来源:互联网 发布:mac mysql dmg 安装 编辑:程序博客网 时间:2024/05/01 10:42

const限定符在变量、函数、指针中的使用

个人理解: 不管是在变量、函数、指针等中加入const限定符,一般都按照优先级高低+从右向左结合的方式去理解(ps:如理解有误,望指教~)

  • case 1const int butfsize = 512;
    理解:
    a):没有优先级,则变量名bufsize首先与int结合,表明是一个int型变量;
    b):声明为int型的bufsize变量再与const结合,则表明它是一个常量;
    c):两者结合起来,bufsize是一个int型常量,初始化为512;

  • case 2const double *cptr;
    理解:
    a):cptr与*结合,表明它是一个指针;
    b):*cptr与double结合,表明它是一个double型指针;
    c):若没有const限定符,表明cptr指向double型变量,增加const限定符,则cptr指向范围缩小,限定在double型的const变量范围
    d):上述3点表示cptr指针的指向对象是const型,但其本身非const指针;

  • case 3int *const currErr = &errNum;
    理解:
    a)存在*,最终是要与变量名结合在一起,故此时在理解上可将等式类比成int const *currErr = &errNum; (参考 int* p 等价 int *p, 若理解有误,请指正)
    b):仍然按照从右向左的结合方式,*currErr是一个指针;
    c):const 与*currErr 结合,表明它是一个const型指针;
    d):int限定指针的指向范围,表明const型指针指向一个int型的变量;
    f):const型指针通俗来讲,表明“我看上你了errNum,就绝不会移情别恋再看上其他的变量“;

  • case 4bool (*pf)(const string&)
    理解:
    a):按照优先级顺序,先考虑()内的;
    b):对const string& 而言,形参首先是一个引用,然后是一个string类型的引用,最后将引用限定一个范围,属于const引用,表示在函数中只能读而不能对引用变量进行写操作;
    c):(*pf)表明pf先是一个指针;
    d): 故pf是一个指向函数的指针,且该函数是带有常string引用和bool返回值。

  • case 5double avg_price() const;
    理解:
    a):根据规则,将const加在成员函数的形参之后,成员函数声明为常量,不能改变其操作对象的成员变量的值

  • case 6const int fun();
    理解:
    a):也适用于从右向左结合方式,首先是一个函数,其次返回int型变量,然后const对返回值进行范围缩小的限定,只能是const型即常量。

  • 注:遇到其他形式再补充~

0 0
原创粉丝点击