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
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很复杂,不想用了……
原文链接: https://www.cnblogs.com/fstang/archive/2013/04/20/3032256.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/85349
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!