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

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"<
苹果正式推送iOS15旧机新面貌,你升级了吗?今天凌晨一点,苹果正式推送了iOS15新系统的正式版本,不少人熬夜等待系统升级,小胖就是其中一员。而此前已更新到RC版本的用户本次推送仅是推送补丁更新,修复小组件问题。据悉,iOSaigo新品快充,有了它,不怕苹果13环保减配了自从苹果手机带头不配充电头,很多其他品牌手机也纷纷响应,手机用户只能使用前面买手机配的充电头或是自行购买充电头,但因为前些年的充电头,充电功率普遍比现在的低(就像苹果N年的五福一安苹果iOS15正式版推送来了,有亮点,有鸡肋,你收到了吗?北京时间9月21日凌晨,苹果公司正式向全球用户推送了iOS15iPadOS15系统,本次升级最为明显的系统UI变化应该是设置选项的显示天气APP整体的设计和推送消息的设计。而最为实三和大神过着怎样的生活?近日,美国苹果手机公司发布关于苹果十三系列智能全新手机消息,这引起各方躁动。在上一代产品苹果十二系列因为受到新冠疫情延迟发布,但苹果十三的发布却如期而至。位于苹果产业链上的各个电子vivoX80Pro大曝光,5500mAh电池2K原色屏,还有超级下巴随着智能手机的不断发展,有的手机厂商非常重视产品的外观创新,有的手机厂商非常执着于产品的核心硬件设计。在国产手机中,vivo手机是一个口碑非常好的手机厂商,同时也是一个研发和创新实iOS15超耗电?iPhone电池实测出炉只有这2款续航力变好苹果iOS15周二正式上线,吸引不少果粉更新享受新功能,知名手机评测网站iAppleBytes特别使用iOS15的RC版本(最后候选版本)进行各型号耗电量测试,让使用者在更新之前能配17。3英寸屏幕,华硕天选2Plus两款机型不过万,该怎么选?最近,越来越多人放弃了游戏台式机,而是开始选择游戏笔记本电脑,这其中主要的原因,还是因为台式机显卡价格太贵,很难降到理想的价格,而笔记本上显卡受制于散热问题,基本不会用来拿作他用,数字化转型如何发力?美国通信巨头ATampampampT教你几招来源计算机世界在本文中,知名电信公司ATT的CTOJeremyLegg向进行数字化转型的IT领导人传授了经验。数字化转型的要点是什么?业务与IT步调要一致。遗留系统给电信运营商带来特斯拉又在美国发生事故,多家机构介入调查记者周纯粼编辑据外媒报道,美国国家运输安全委员会(NTSB)周五表示,它将派出一个小组调查本周发生在佛罗里达州科勒尔盖布尔斯的特斯拉汽车车祸,该车祸造成两人死亡。科勒尔盖布尔斯警方三星发力,65英寸QLED量子点HDMI2。1游戏电视降至7499元提起三星电视,大家知道的是其是世界上销量第一的品牌,但在国内价格太高,性价比不足,竞争力一般。这种印象这几年一直存在,但现在三星也开始注重性价比了,毕竟索尼早已在这方面发力,而关键57万起的国产车,高合HiPhiX,重新定义了国产豪华纯电动车的上限现在消费者选车的角度比较刁钻,特别是新能源领域,很多年轻人都开始关注自动驾驶这些技术,其实现在的自动驾驶依旧处于概念阶段,实现起来相当困难,所谓的L2自动驾驶不过是车子的一些智能化
小众极简风,听歌的不二之选说到音乐软件,大家都会想到网易云酷狗还有现在出品的QQ音乐简洁版,但它们都如出一辙,音质差付费限制功能乌七八糟的啥都有,连听个歌都这么嘈杂为了能够专注听音乐,威仔有一段时间试用了这最好用的PDF神器,80的人都不知道提到办公文档,很多人会用到PDF,大家对它再熟悉不过了!对于PDF的处理工具,软件网站也是多如牛毛!但是它们都有一个共同的特性,会把很多文档格式的功能集中在一块,这样界面看得就很添涨姿势!教你用手机把文件发送到桌面在电脑使用过程中,为了达到能直接打开文件的目的,我们通常都会选定文件发送到桌面快捷方式,遗憾的是手机没有自带发送到桌面的功能,那么可不可以借助软件执行这样的命令呢?发送到桌面(安卓深圳市知识产权政府奖励补贴类项目申报清单速览如果您正在面临疫情造成的企业生存难企业资金周转难融资难创业就业难等问题是高新技术企业科技创新项目创新载体属于深圳高层次人才或某专项人才。那么,以下适合您企业团队的各类补贴奖励项目,农夫山泉上市背后,它的商标和专利布局是怎样的?9月8日上午,农夫山泉正式在香港交易所上市,喊着我们不生产水,我们只是大自然的搬运工。的农夫山泉,给大众的印象,都被深刻的植入了一瓶瓶红色包装矿泉水中。但实际上,光靠2元一瓶的矿泉教师职称评审新途径!专利可作为职称评审条件教师职称认定,对于一线教师而言,都是心中永远的痛!不少教师奋斗数十载,最后还得忧心职称问题,不评不甘心,评不上更糟心近日,关于河南省的教师职称评定,传来了一个令人欣慰的好消息!根据不止秋天的第一杯奶茶,被注册成商标的还有这10大网络热词前几日,抢占朋友圈高地的秋天第一杯奶茶热度似乎还没有降下来,不少朋友在喝完奶茶后,依然在前线吃着瓜!秋天第一杯奶茶公司已于9月24日上线,第一名是河南省信阳市的潢川县秋天第一杯奶茶支付宝被诉专利侵权,又遇知腹饱商标!蹭名牌行为,该停了蚂蚁集团近段时间筹备上市,受到各界前所未有的关注,一有进度,就会产生新的热搜,引发一波又一波的讨论此时谁要是能趁机蹭上几个流量话题,也是够够的了话题一支付宝提供扫码服务被诉专利侵权一件实用新型专利可以赚上千万,你还说专利没用?很多人的主观意识中都认为只有高精尖领域的发明专利才具备高价值,实用新型专利和外观设计专利都没啥用,其实不然,只要保护和运用得当,实用新型和外观设计专利都能为权利人带来丰厚的回报。自干货申请专利有哪些好处?直接申请和直接购买,哪个更快?科技创新是第一生产力。保护创新成果,持续激励创新的最佳途径之一,则是通过申请专利,得到法律保护。在重视知识产权保护的社会趋势之下,越来越多的个人和企业,选择给自己的新技术新产品申请一篇文章带你认识行业一哥的无人机全家桶5月7日,大疆发布了行业应用级无人机经纬M300RTK(实时动态载波相位差分技术)。其拥有55分钟的超长续航,支持15公里图传距离,以及六向定位避障等功能,再一次成为了行业标杆。等