我们知道,数据保护很重要,如文件的用户限制,只读限制,密码保护等。 在编程语言中,使用const限定变量来做数据保护,以避免其数据状态的改变。 如有一个类,要访问一个类公共成员,需要通过声明类对象(或类对象指针、引用)来引用类的成员函数。如果声明了这个类的一个常对象呢?常对象是说不能改变类的数据成员,对象是用来调用成员函数的,也就是说调用的成员函数不能更改数据成员。在编译阶段,编译器无法去查询引用的成员函数的定义,所以C++的做法是,设置常成员函数的语法机制,在类定义时,常成员函数的是在末尾添加一个const标识(因为函数还可以返回const类型(放在开头),所以只能放在末尾),常成员函数的函数体只能引用成员数据做右值(不能引用数据成员做左值)。所以,常对象自然只引用常成员函数,编译器会在编译阶段检查常对象引用的是不是常成员函数,会在类定义中去查找对应的常成员函数版本,如果不是,会引发编译错误。另外,常成员函数虽然可以返回引用,并可以用常对象调用返回引用的常成员函数做左值来修改对象状态,但最好是值返回,因为常对象的初衷就是不改变对象状态。 例如:const Array ib(7);// seven-element Array ib不能调用非常成员函数。 值返回的常运算符重载也不能被:ib.operator[](3) = 8; // error,相当于ib[3] = 8; // 如果定义的是int &operator[]( int ) const; ib.operator[](3)可以做左值,但返回了声明const对象的初衷 cout<#include #include // exit function prototype using namespace std; class Array { public: Array( int = 10 ); // default constructor ~Array(); // destructor // subscript operator for non-const objects returns modifiable lvalue int &operator[]( int ); // subscript operator for const objects returns rvalue int operator[]( int ) const; //int &operator[]( int ) const; // 也可以返回引用,但会引发常对象也可以[]做左值 private: int size; // pointer-based array size int *ptr; // pointer to first element of pointer-based array }; // end class Array // default constructor for class Array (default size 10) Array::Array( int arraySize ) { size = ( arraySize > 0 ? arraySize : 10 ); // validate arraySize ptr = new int[ size ]; // create space for pointer-based array for ( int i = 0; i < size; i++ ) ptr[ i ] = 0; // set pointer-based array element } Array::~Array() { delete [] ptr; } // overloaded subscript operator for non-const Arrays; // reference return creates a modifiable lvalue int &Array::operator[]( int subscript ) { // check for subscript out-of-range error if ( subscript < 0 || subscript >= size ) { cerr << " Error: Subscript " << subscript << " out of range" << endl; exit( 1 ); // terminate program; subscript out of range } // end if cout<<"non-const version returning reference(lvale)"< = size ) { cerr << " Error: Subscript " << subscript << " out of range" << endl; exit( 1 ); // terminate program; subscript out of range } cout<<"const version returning rvale"<
被吉利收购,是魅族的最好归宿?随着增量市场逐渐消失,手机厂商开始博弈存量市场,头部厂商的优势在行业洗牌中进一步凸显,中小厂商生存空间日渐萎缩,生存压力不断增大。曾被誉为互联网手机鼻祖的魅族,如今也走到新的十字路空调推荐空调已就位,看球的快乐回来了前几天家里的空调坏掉了,深夜看球冻得我真是不行。低于10度的室内温度,全靠一腔热情在支撑着我看球。眼瞅着冬奥会要来了,冰球运动也得继续追啊,趁着楼下海尔专卖店搞活动,下单海尔雷神者美国三州和华盛顿特区起诉谷歌不当获取用户位置数据据国会山报报道,美国三个州和华盛顿特区的总检察长当地时间1月24日提起诉讼,指控谷歌欺骗消费者分享他们的位置数据。根据诉讼内容,谷歌至少从2014年起就做出了能保证用户隐私的误导性突破性超精密加工平台可实现下一代摄像模块和电动汽车光学设计突破性超精密加工平台可实现下一代ARVRMR摄像模块和电动汽车光学设计MooreNanotechnologySystems推出这款备受期待的250UPLMP超精密加工平台,可满足镜中交集团联合腾讯推出电子工卡,农民工可查询确认工资蓝鲸TMT频道1月18日讯,针对农民工工资发放难落实工地管理无序终端数据不互通等问题,中国交通建设集团有限公司(以下简称中交集团)联合腾讯开发了骄子微卡,是面向农民工管理场景的综合特斯拉据悉发布数十亿美元摄像头招标公告,LG三星等参与竞标据韩国媒体TheElec报道,特斯拉近期发布了价值数十亿美元的摄像头模组招标公告,计划用于今明两年的车型,包括ModelSModel3ModelX和ModelY,以及尚未推出的电动小米第一款竖向折叠屏手机价格厚道有望今年发布今天,博主数码闲聊站爆料,小米研发的竖向折叠屏手机已在路上,有望在今年跟消费者见面。在去年上半年,小米推出了旗下第一款量产折叠屏旗舰MIXFOLD,它采用了类似三星GalaxyZF今天为了关闭oppoa52手机,浪费几小时,从上午关到下午才找到今天为了关闭oppoa52手机,浪费几小时,从上午关到下午才找到。期间干了点别的就是。烦死人。经常更新。死机了2次今年,担惊受怕,怕重要数据没了。死机不懂重启,连卖机子的都不懂,万价格上扬ampampamp功能升级,到底值不值?JEETONE升级版真无线蓝牙耳机1。前言JEET,依托泰捷软件多年的软硬件开发经验,在真无线耳机领域一直有着不错的口碑。我体验过它家的不少款耳机,包括AirPlusMarsBass等等,都觉得性价比值得更多普通消美团上线星巴克1971客厅专属空间服务新京报讯(记者王子扬)1月18日,星巴克中国宣布将在美团旗下平台首发1971客厅专属空间服务,双方联合打造的专星送新功能已在美团上线。据介绍,1971客厅可满足聚会会议工作学习等个廖凯原特斯拉第三大个人股东,拿出6亿捐高校,却遭到无尽嘲讽文财图说编辑财图说要说这段时间,全世界最火的公司,当属特斯拉,去年3月份的时候,股价还在500多美金徘徊,如今就已经到了1060多美金,你以为我今天要说马斯特吗?当然不是,因为马斯