const

作者: Roy_he | 来源:发表于2014-04-17 16:50 被阅读0次
    const int size = 1024;
    int array[size];//OK
    

    size在程序编译时就知道其值

    file b:
    
    extern const  int buffersize
    

    buffersize在某一个地方有,但不一定是const,但是在file b中是const的,不能修改buffersize

    int a = 11;
    const int *p0 = &a;
    int *const p1 = &a;
    int const *p2 = &a;
    

    const int *int const *等价(const都在*前面),是说int *是不可更改的(不准确的描述),即通过该指针不可更改指针所指向的内存的内容
    int * const是修饰point的(const*后面),该point是不可更改的,即该point不可指向其它内存,但可更改point指向的内存的内容

    #include <iostream>
    using namespace std;
    
    class A{
        int i;
    public:
        A() : i(0){ }
        void f(){cout << "f ()" << endl;}
        void f() const {cout << "f() const" << endl;}
    };
    
    int main()
    {
        const A a;
        a.f();
        return 0;
    }
    

    运行结果:f() const
    C++代码都要先转换为C代码:

     void f(A* this){cout << "f()" << endl;
     void f(const A* this){cout << "f() const" << endl;
    

    这里void f() const中的const指代的是this,这两个函数是overload关系

    相关文章

      网友评论

          本文标题:const

          本文链接:https://www.haomeiwen.com/subject/skvltttx.html