zoukankan      html  css  js  c++  java
  • C++ const

    const double *cptr;//cptr 是一个指向const double 的指针,我们可以重新赋值cptr 使其指向不同的对象但不能修改cptr 指向的对象

    任何试图将一个非const 对象的指针指向一个常量对象的动作都将引起编译错误

    对传入某函数的const vector<>&类型,既不可以改变vector中的元素,也不可以对x做赋值(如果不加const,两者都可以),如下例:

    void f(const vector<int>& x){
        //x.clear();//err
        //x.push_back(2);//err
        //x[0] = 5;//err
        vector<int> y;
        y.push_back(4);
        //x = y;//err
        printf("%d\n", x[0]);
    }

    如果传入某函数的const vector<Elem>&中类型Elem是自定义的class时,只能调用常成员方法,如下例中getA那种带const的,而这个const保证了该方法不能修改类成员变量,否则报错

    class Elem{
        private:
            int _a;
        public:
            void setA(int x){
                _a = x;
            }
            int getA() const {
                //_a = 3;//err
                return _a;
            }
    };
    void f3(const vector<Elem>& x){
        x[0].getA();
        //x[0].setA(23);//err
    }

    总之,const很复杂,不想用了……

  • 相关阅读:
    习题2-7
    习题2-6
    习题2-5
    习题2-4
    习题2-3
    作业二 分支循环结构
    2- 8
    实验三-计算圆柱体积
    实验三-计算n个圆柱体体积
    实验3-计算圆面积
  • 原文地址:https://www.cnblogs.com/fstang/p/3032256.html
Copyright © 2011-2022 走看看