zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    50
    49
    Windows编程之connect函数研究
    48
    C++创建窗口程序初步
    47
    46
    45
    计算机组成原理实验思路
    44(function pointer 2)
  • 原文地址:https://www.cnblogs.com/guyan/p/2400705.html
Copyright © 2011-2022 走看看