• bitwise constness与logical constness【EC++笔记】


    View Code
    当成员函数为const时 constness(常量性)

    bitwise constness:不更换对象内任何一个字节,编译器判断成员变量没有赋值动作即可。

    不足:


    class test
    {
    public:
    char& operator[](size_t index) const
    {
    return mPointer[index];
    }
    test(const char* str)
    {
    mPointer = new char[strlen(str)+1];
    memcpy(mPointer,str,strlen(str)+1);
    }
    ~test()
    {
    delete mPointer;
    }

    private:
    char *mPointer;

    };
    int main()
    {
    const test T1("123"); //创建常量对象
    char *pc = &T1[0]; //调用const成员函数 返回指向内容的指针
    pc[0]='x'; //指针指向的值可以改变,与常量对象矛盾
    return 0;
    }


    logical constness:一个const成员函数可以修改它所处理的对象的某些bits,但要保证在用户使用中侦测不出。

    可使用mutable关键字解除bitwise constness,例如 mutable char *mPointer;
  • 相关阅读:
    Drupal 7 中文安装教程
    苹果之硬盘启动安装
    STP详解
    RedHat Install
    Linux密码更改
    win8.1开启虚拟wifi
    跳过安装密钥安装系统
    虚拟机中Linux安装Tools
    桌面虚拟化之XenDesktop7
    桌面虚拟化之部署DDC-5.6
  • 原文地址:https://www.cnblogs.com/guyan/p/2400705.html
Copyright © 2020-2023  润新知