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

C面向对象编程进阶(函数重载)

  在非面向对象的过程化语言中,要求每个过程或函数必须具有唯一的调用名,否则会导致编译错误。
  面向对象程序设计语言提供使用同一函数名的机制,通过参数个数的不同或类型的不同来选择使用相应的代码,这就是函数重载。本节重点讲解成员函数重载和运算符重载。成员函数重载
  和普通函数类似,在一个类中也可以有成员函数重载。成员函数的重载在规则上和普通函数无差别,这里不再赘述。
  例1 成员函数重载示例#include    using namespace std; class Sample { private:   int i;   double d;   public:   void setdata(int n) {i=n;d=0;}//setdata成员函数重载   void setdata(int n,double x) {i=n,d=x;}//setdata成员函数重载   void disp()   {   cout<<"i="<   using namespace std; class complex { public:   complex() {real=imag=0;} complex(double r,double i) {real=r;imag=i;} complex operator+(const complex &c);//+运算符重载 friend void print(const complex &c); private: double real,imag; }; inline complex complex::operator+(const complex &c) { return complex(real+c.real,imag+c.imag); } void print(const complex &c) { cout<   using namespace std; class Time { public:   Time() {minute=0; sec=0;} Time(int m, int s): minute(m),sec(s) { } Time operator++(); void display() {cout<=60) { sec-=60;   ++minute; }   return *this; } int main() { Time time1(34,0);   for (int i=0;i<60;i++)   {   ++time1;     time1.display();   }   return 0; }
  例3中对++运算符进行重载。"++"运算符是单目运算符,只有一个操作数,因此,此运算符重载函数只有一个参数,且例6-3中该运算符重载函数作为类的成员函数时,则省略此参数。该例模拟秒表,每次走一秒,满60秒进一分钟,此时秒又从0开始算。运算符重载为类的友元函数
  与运算符重载为成员函数时不同的是,重载的友元函数不属于任何类,运算符的操作数都需要通过函数的形参表传递。操作数在形参表中从左到右出现的顺序就是用运算符写表达式时操作数的顺序。
  这里分双目运算符和单目运算符两种情况,讨论运算符重载为友元函数的具体方式。如果有双目运算符U,它的其中一个操作数是类A的对象a,那么运算符U就可以重载为类A的友元函数,此友元函数的两个参数中,一个是类A的对象,另一个是其他对象,也可以是类A的对象。
  这样双目运算符重载为类的友元函数后,假设运算符的一个操作数是对象b,则表达式aUb就相当于调用函数operator U(a, b)。如果有前置单目运算符U,比如前置"--", a为类A的对象,如果要实现U a这样的运算,就可以把U重载为类A的友元函数,此友元函数只有一个形参,为类A的对象,重载后表达式U a相当于调用函数operator U(a)。如果是后置单目运算符U,如后置"++", a还是类A的对象,那么要实现a U这样的运算,也可以把U重载为类A的友元函数,此时友元函数就需要有两个形参,一个是类A的对象,另一个是整型形参,此整型形参没有实际意义,只是为了区分前置运算符和后置运算符的重载。重载后表达式aU就相当于调用函数operator U(a, 0)。
  例4 修改例3为运算符重载为类的友元函数#include    using namespace std; class Time { public:   Time() {minute=0; sec=0;} Time(int m, int s): minute(m),sec(s) { } Time operator++(); void display() {cout<=60) { a.sec-=60;   ++a.minute; }   return a; } int main() { Time time1(34,0);   for (int i=0;i<60;i++)   {   ++time1;     time1.display();   }   return 0; }
  注意:该例中是单目运算符前置重载,而且重载为友元函数。因此operator++有一个参数,此参数为Time类对象。该程序结果和例3结果一样,均为显示由34:1到35:0一秒一秒的计数过程。
  不管运算符重载是以上哪种形式,都需要遵循以下规则。
  (1) C++中的运算符除了少数几个之外,全部可以重载,而且只能重载C++中已有的运算符。(不能重载的运算符只有五个,它们是:成员运算符"."、指针运算符"*"、作用域运算符"::"、类型说明符"sizeof"、条件运算符"?:"。)
  (2)重载之后运算符的优先级和结合性都不会改变。

围观!华为Mate50Pro新曝光刘海屏回归麒麟100005G芯片哈喽,您好!我是原呵呵,点点关注吧,更多精彩内容等着您华为Mate系列旗舰机自这整个阵容成立以来就一直火爆。与此同时,据报道,这家科技制造商正准备推出华为Mate50系列,它可以配最轻量的日常办公软件推荐组合ToDsek网站地址ToDesk远程控制软件免费安全流畅的远程连接电脑手机ToDesk官方版是一款简易实用,功能全面的远程控制软件。ToDesk官方版支持远程控制支持远程文件传输支iOS16升级名单出炉,小组件玩出新花样,21款手机有你的吗大家好,我是三月。这段时间手机市场是那般火爆,如今三月份也已经就要结束了,但是三月份带给我们的惊喜还真是不少,带大家一起回味一下。从一开始的联发科天玑9000和天玑8100开始,之拜登拟动用国防生产法鼓励电池材料生产据路透社报道,当地时间3月30日,据两名知情人士透露,美国总统拜登最早可能在本周启动一项冷战时期的国防生产法案,以鼓励国内生产制造电动汽车电池所需的矿物。根据这项法案,企业有望获得6个小众但却实用的app,保证用过一次你就会彻底爱上这几个app你不一定用过,但是一定要试试看,保证用过一次你就会彻底爱上!1我的桌面(iOS)超多原创壁纸的桌面美化app,可以设置自动换壁纸制作静态壁纸和动态锁屏壁纸还拥有300的微信亮相三大新功能!网友终于出现了前不久微信高调宣布将打造信用支付产品分付也是引起了大家的重视,微信不仅在其他领域拓展发力,自身的社交功能也是没有落下,最近微信亮相三大新功能,网友终于出现了!我们一起来看看通话铃声红米和荣耀,究竟谁才会是最后的赢家1000多的价格可以买到一部性能较好的手机吗?红米和荣耀也许会告诉你这个问题的答案。2013年7月31日,红米(Redmi)横空出世,这一天对于小米来说有着重要里程碑的意义。201顺义区工业互联网标识赋能提档加速随着中国船级社成功接入,工业互联网标识解析国家顶级节点(北京)(以下简称国家顶级节点(北京))累计标识注册量超150亿。近年来,顺义区抢抓工业互联网发展机遇,加快国家顶级节点(北京一加10Pro行业首发1HzAOD息屏常显低功耗4月1日下午,OPPO首席产品官刘作虎对一加10Pro的优秀屏幕素质进行了种草,该机手机行业首发1HzAOD显示,凭借LTPO2。0技术能时刻保持低功耗息屏常显,晚上再也不怕找不到堆叠面积增大的方式,能让14nm芯片,比肩5nm么?在相同指令集CPU架构的情况下,5nm芯片性能大于14nm芯片。但是,从应用到指令集的过程,如果编译优化做得足够好,性能可以达到指数级提升。华为与友商相比,CPU架构是自己的,操作科普深地科学透视地球的金钥匙地球深部亦即深地,一般是指浅地表之下人类难以达到的固体地球深部,包括从浅表的地下空间地壳地幔地核和地心在内的整个固体地球系统。来源视觉中国深地科学是研究地球深部结构物质组成与变化过
名企头条阿里巴巴回应被罚182亿外媒称腾讯收购搜狗获批准阿里巴巴回应处罚决定我们诚恳接受,坚决服从自2015年以来,阿里巴巴集团对平台内商家提出二选一要求,禁止平台内商家在其他竞争性平台开店或参加促销活动,如此行为已涉嫌构成垄断。4月1荣耀终端董事长万飚复兴荣耀,目标前三荣耀董事长称目标是成为前三对话荣耀终端董事长万飚复兴荣耀,目标前三受到美国制裁影响,在核心部件供应断裂的几个月时间里,荣耀在中国市场的份额被竞争对手们瓜分。荣耀品牌手机在高峰时期占箩筐旗下易图通与微软签署合作协议,为汽车厂商提供自动驾驶服务近日,箩筐旗下公司易图通与微软签署合作协议,为汽车厂商提供自动驾驶相关服务。在此次合作中,双方将利用各自领域的优势,展开深入紧密的合作,形成具有中国特色的汽车行业解决方案,来应对自LK分享GBT404292021汽车驾驶自动化分级正式发布一标准简介2021年8月20日,由工业和信息化部提出全国汽车标准化技术委员会归口的GBT404292021汽车驾驶自动化分级推荐性国家标准由国家市场监督管理总局国家标准化管理委员会LK分享智能网联汽车行业信息安全现状与威胁随着汽车迈向智能化网联化电动化和服务化之后,尤其是众多的网联接口,给智能网联汽车带来的巨大的安全挑战。虽然汽车行业的安全研究已经开展了很多年,但从整个行业来看,最佳实践的缺失,安全LK分享一文读懂汽车驾驶自动化分级(GBT404292021)汽车技术的发展促使自动驾驶汽车概念逐步成为现实,自动驾驶汽车的普及将是必然结果,在不久的将来,自动驾驶汽车将改变人们的出行方式。然而在自动驾驶技术迅速发展产业模式不断走向成熟车企产箩筐旗下易图通智慧加油可视化系统亮相中石油2021科信创新大会近日,箩筐旗下易图通与驿亭科技携手打造的加油站高清可视化数字孪生系统,在中国石油天然气集团有限公司(简称中石油)在京举办的2021科技与信息化创新大会上亮相。本系统依托数字孪生技术LK分享一张图破局AVP量产难题从APA到AVP量产进程正在加速,各大主机厂都在加快推动L4级AVP(自动代客泊车)系统的量产。在2021年度(第十二届)高工智能汽车开发者大会上,易图通产品拓展与策略总监汤咏林发LK分享基于全要素感知的智慧公路信息化工程设计方案探讨近年来,智慧公路是公路现代化的重要标志和高质量发展的演进形态。我国拥有世界上最庞大的高速公路网络最复杂的车路应用场景和超大规模的公路线网,发展智慧公路具有巨大潜力和广阔空间,新疆地LK分享自动驾驶的先启之地物流运输行业很多时候我们讲自动驾驶,大家都紧紧盯住的是乘用车行业,但其实乘用车行业确是自动驾驶商业落地和成本最高的地方,第一,最复杂多变的应用场景,人,车,城市道路的复杂。第二,复杂多变的客户箩筐发布致全体股东的一封信公司今日发布致全体股东的一封信,信中包括对2021及未来的展望。信函如下。各位尊敬的箩筐股东对于箩筐来说,2021年是具有历史意义的一年。在公司运营方面,我们持续投入,建设高精度地