范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

C为什么有时运算符重载需定义一个函数体完全相同的const版本

  我们知道,数据保护很重要,如文件的用户限制,只读限制,密码保护等。
  在编程语言中,使用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多美金,你以为我今天要说马斯特吗?当然不是,因为马斯
颜值才是王道?精致打磨的外观真的能打动消费者对于颜值党来说,除了出色的表现和抢眼的拍照外,机身的设计也不能耽误。去年底vivo发布的X系列新成员vivoX60Pro是一款轻薄吸睛的高颜值手机,在手机配色上,vivoX60Pr买小米手机可以再等等,这些新机即将发布,你看好哪一款呢?小米手机现已成为民族品牌,深受广大用户喜爱。它的销量也名列前茅。然而,在打入高端市场之后,它的机型实际上已经被精简了。上半年仅发布了五款车型。不要气馁。如果你想买小米手机,你可以等决策参考巴菲特看好中国市场乐视网下周一暂停上市1股东大会现场芒格错过谷歌巴菲特看好中国市场事件5月4日,伯克希尔哈撒韦公司股东大会在美国内布拉斯加州奥马哈举行,股神巴菲特和60年老搭档芒格一同亮相并接受了投资者的提问。巴菲特和决策参考天津市互联网信息办公室成立督导组进驻视觉中国网站1天津市互联网信息办公室成立督导组进驻视觉中国网站事件4月12日下午,针对视觉中国登载违法违规图片信息的情况,天津市网信办成立工作督导组进驻视觉中国网站,就存量信息日志留存信息审核决策参考李彦宏王坚等入选中国工程院候选院士名单1李彦宏王坚等入选中国工程院候选院士名单事件4月30日下午消息,中国工程院公布了2019年院士增选有效候选人名单。经中国工程院主席团审定,最终确定的有效候选人共531位。今年来自企决策参考视觉中国被从重罚款30万游戏版号申报正式重启1视觉中国被从重罚款30万事件4月18日,天津市网信办在官方公众号网信天津披露,已就视觉中国网站传播违法有害信息的行为做出从重罚款的处罚。根据中华人民共和国网络安全法相关条款,行政决策参考字节跳动上线社交产品飞聊中国芯片人才缺口超30万1字节跳动上线社交产品飞聊,集合即时通讯和兴趣社区事件近日,字节跳动在今日凌晨悄然上线社交产品飞聊。飞聊是即时通讯软件和兴趣爱好社区的集合,致力于帮助用户发现同好。点评飞聊是继多闪1亿颗A15仿生芯片并非全部留给iPhone13,苹果另有用途?iPhone13很快就要发布了,为确保iPhone13满足消费者,A15Bionic于5月开始量产。与iPhone12系列相比,苹果预计即将推出的机型需求会更高,苹果已要求供应商将今年最惨的应该是5G手机,为何与4G机集体跳水,我想是这个从去年开始,换手机要等5G的言论就变得非常流行,并且主要制造商已经在今年年初预测,随着5G的大规模落地,新一轮的5G换机浪潮将到来。乍一看,这是非常合理的。手机市场已经从增量型变成8月份这几款机型最值得入手,买到就是赚到红米K30i推荐它的原因比较简单。首先,RedmiK30i的价格非常便宜。可以以不到1500元的价格购买6128G版本。在整体配置上,RedmiK30i也比较均衡,没有致命缺点。外VIVOX50和OPPOReno4,两者对比,谁更胜一筹?5G功能已成为今年新安卓手机的标配,借助该技术,用户已经成功体验了更快的网速并改善了用户体验。但5G技术的应用也导致了手机的许多缺点。仔细观察发现,市场上大多数4G手机的重量和厚度