zoukankan      html  css  js  c++  java
  • const 深悟理解

    了解const,我们通过一个故事来理解一下,甲某一天死期存储一笔钱(本金),到了死期时间过了,甲的本金没有发生变化,但他可以去任何一个银联银行进行取款(const int *p)。乙某一天借给了同学丙100元,而乙只能向同学丙要钱,钱数随同学手头资金还取(int * const  p)。

    const:是一种约束。

    1.当const修饰变量时:

    ①const int  *p:const修饰的是int型数据变量,故表示*p是一个常量,指针p所指向的数据无法更改。

    ②int * const p:const修饰的指针变量p,故表示变量地址是固定的,指针p所指向的数据可以更改。

    ③const int*  const p=int const * const p:表示指针地址和指针变量所指向的数据都是不可以更改的。

    2.当const修饰函数中的参数:void f(const int a);

    表示在函数f()中,整型变量a不能通过赋值进行更改。

    例外:当我们在学习智能指针时,被const修饰的对象作为参数进行修改其数据成员,我们可以采取两种方式:

    ①:((auto_ptr<_Ty>*)(&_Y))->_Owns=false来改变数据。(对对象取地址,强转成原对象类型+*)。

    ②:即将需对被const修饰的对象所为参数进行修改其数据成员,可以将其成员加关键字mutable修饰,则就是可以改变。

    auto_ptr(const auto_ptr<_Ty> &_Y)
        {

       _Owns=_Y._Owns;
                ((auto_ptr<_Ty>*)(&_Y))->_Owns=false;

       _Ptr=_Y._Ptr;
        }

    3.当const修饰函数:void f() const;

    表示一个不做修改数据功能的常成员函数。

  • 相关阅读:
    discuz论坛X3升级时 文件下载出现问题,请查看您的服务器网络以及data目录是否有写权限
    discuz管理中心无法登陆
    在Windows 7下面IIS7的安装和 配置ASP的正确方法
    window.open
    linux下的vmware虚拟机如何回收虚拟磁盘空间
    CentOS7 安装lamp 3分钟脚本
    pyhon 编译C++安装需要 c99 模式
    条件判断
    python字符串杂项
    RIPv1&v2
  • 原文地址:https://www.cnblogs.com/single-dont/p/10420554.html
Copyright © 2011-2022 走看看