zoukankan      html  css  js  c++  java
  • 比较常见的const与指针的组合情况

    1.对于普通的const与基本类型组合,都是表示的是这是一个常量,

      const int a;

      int const a; 

       表示的意思是一样的,a是一个常量,不可改变

    2.对于const与指针组合在一起,可以将const理解为内容,*理解为指针,誰在前面谁不能改变,誰在前面先读谁

      const int *a;  等价于int const *a;    const在前面所以内容不可以改变,但是指针指向可以改变。也就是常量指针

        如:int const *a=b;    这样就不能再出现*a=x等其他值了,因为内容不可变,但是可以通过a=&x;这样来进行改变指针的指向

        int *const a;  表示的是指针指向不可改变,但是指针所存放的内容可以改变,也即是指针常量

     如:int *const a=b; 这样再出现 a=&x,这样重定义指针指向的语句就不合法,只能通过*a=x这样来进行内容的改变。

          const int &ri=i;定义的是引用是另一变量的别名,它本身就是一个常量,也就是说不能再让一个引用成为另一个变量的别名。 我们不能通过ri去改变它所代表的内存区域

    3.const修饰函数传入参数

           将函数传参数修饰为const,以指明使用这种参数仅仅是为了效率的原因,而不是想让调用函数能够修改对象的值,同理,将指针声明成const,函数将不修改由这个参数所指向的对象。 如:void Fun(const int *a);  void Fun(const int &a)

    4.修饰函数返回值

           可以阻止用户修改返回值,返回值当然也要相应的赋给常量或者常指针。

        例如:有时候需要返回的是指针或者引用,我们可以通过指针修改所指的对象,但是有时候不希望改变这个内容,这个时候就需要返回一个常量。

    5.const修饰成员函数(c++特性)

    const对象只能访问const成员函数,而非const对象可以访问任意成员函数,包括const成员函数

    const对象的成员是不能被修改的,而通过指针维护的对象确实是可以修改的

    const成员函数不可以修改对象的数据,不管对象是否具有const性质。编译时以是否修改成员函数为依据进行检查。

      解释:

    const成员函数:函数名称后面加上const。

    当一个类中存在同名,同参的常量和非常量成员函数时,调用的时候,常量对象调用常量成员函数,非常量对象调用非常量成员函数。

  • 相关阅读:
    用webservice实现的一个天气预报程序
    让VS.net2005手机模拟器上网
    EVC4.0 PPC2003 Emulator 转中文版
    BSTR转CString
    在pocket pc 2003上播放声音
    VC++.net 2005 SmartDevice 屏幕转向
    c#.net2005 调用evc4.0生成的dll文件
    Json
    adb 命令模拟按键事件
    bat 截取字符
  • 原文地址:https://www.cnblogs.com/jijiji/p/4855242.html
Copyright © 2011-2022 走看看