当前位置: 首页 > news >正文

湘潭市网站建设wordpress自动标签

湘潭市网站建设,wordpress自动标签,400网站建设,网站外链建设书籍之前学习了类的函数重载的概念#xff0c;今天学习操作符重载的概念。在这之前我们先看一个例子#xff1a; 上面是一个复数的加法#xff0c;a为复数的实部#xff0c;b为复数的虚部#xff0c;在main函数里我想实现复数c1与c2的加法。很显然#xff0c;正常的号操作符…之前学习了类的函数重载的概念今天学习操作符重载的概念。在这之前我们先看一个例子 上面是一个复数的加法a为复数的实部b为复数的虚部在main函数里我想实现复数c1与c2的加法。很显然正常的号操作符是不能实现复数的相加减的。那么我们可以添加功能函数实现让两个复数的相加减的。代码如下 #include stdio.hclass Complex {int a;int b; public:Complex(int a 0,int b 0){this-a a;this-b b;}int getA(){return a;}int getB(){return b;}friend Complex Add(const Complex p1,const Complex p2); };Complex Add(const Complex p1,const Complex p2) {Complex ret;ret.a p1.a p2.a;ret.b p1.b p2.b;return ret; }int main() {Complex c1(1,2);Complex c2(3,4);Complex c3 Add(c1,c2); //c1 c2printf(c3.a %d,c3.b %d\n,c3.getA(),c3.getB());return 0; }打印如下 c3.a 4,c3.b 6说明程序实现了两个复数相加减的功能。 上面的Add函数解决了Complex对象的相加减的问题但是Complex是现实世界中确实存在的复数并且复数在数学中的地位与普通的实数相同。 为什么不能让 号这个操作符也支持复数相加呢 由此我们你就想到了一个概念操作符重载的概念 C中的重载能够扩展到操作符的功能操作符的重载以函数的方式进行 本质 用特殊形式的函数扩展操作符的功能 操作符重载的用法 通过operator关键字可以定义特殊函数operator的本质是通过函数重载操作符 语法 Type operator Sign(const Type p1, const Type p2) {Type ret;return ret; }其中Sign为系统中预定义的操作符如- * /等 将上面的程序改写为 #include stdio.hclass Complex {int a;int b; public:Complex(int a 0,int b 0){this-a a;this-b b;}int getA(){return a;}int getB(){return b;}friend Complex operator (const Complex p1,const Complex p2); };Complex operator (const Complex p1,const Complex p2) {Complex ret;ret.a p1.a p2.a;ret.b p1.b p2.b;return ret; }int main() {Complex c1(1,2);Complex c2(3,4);Complex c3 c1 c2; //operator (c1,c2)printf(c3.a %d,c3.b %d\n,c3.getA(),c3.getB());return 0; }运行结果为 c3.a 4,c3.b 6这说明我们的修改是对的我们已经解决了这个复数相加的问题。 但是我们上述的程序都用到了友元的概念但是友元一般不会出现在现代软件工程中。所以我们还可以改进 可以将操作符重载函数定义为类的成员函数比全局操作符重载函数少一个参数左操作数不需要依赖友元就可以实现操作符重载编译器优先在成员函数中寻找操作符重载函数 看如下代码 #include stdio.hclass Complex {int a;int b; public:Complex(int a 0,int b 0){this-a a;this-b b;}int getA(){return a;}int getB(){return b;}Complex operator (const Complex p){Complex ret;printf(Complex operator (const Complex p)\n);ret.a this-a p.a;ret.b this-b p.b;return ret;}friend Complex operator (const Complex p1,const Complex p2); };Complex operator (const Complex p1,const Complex p2) {Complex ret;printf(Complex operator (const Complex p1,const Complex p2)\n);ret.a p1.a p2.a;ret.b p1.b p2.b;return ret; }int main() {Complex c1(1,2);Complex c2(3,4);Complex c3 c1 c2; //c1.operator (c2)printf(c3.a %d,c3.b %d\n,c3.getA(),c3.getB());return 0; }运行结果为 Complex operator (const Complex p) c3.a 4,c3.b 6分析运行结果以及程序 运行结果打印的Complex operator (const Complex p)说明编译器优先在成员函数中寻找操作符重载函数而没有选择全局变量中的重载函数。计算结果正常说明可以将操作符重载函数定义为类的成员函数。 程序中类的成员重载函数Complex operator (const Complex p)只有一个参数少一个参数。并且c1 c2 等同于c1.operator (c2)。 总结 操作符重载是C强大的特性之一操作符重载的本质是通过函数扩展操作符的功能operator关键字是实现操作符的关键操作符重载遵循相同的函数重载法则全局函数和成员函数都可以实现对操作符的重载 想获得各种学习资源以及交流学习的加我有我博客中写的代码的原稿 qq1126137994 微信liu1126137994 可以共同交流关于嵌入式操作系统C语言C语言数据结构等技术问题。
http://www.yutouwan.com/news/416445/

相关文章:

  • 网站建设需求公司内部调查php p2p网站开发
  • 南充企业网站建设seo就业前景如何
  • 企业网站做百度小程序北航网站建设
  • 如何做视频卖给网站wordpress分表存储
  • 福州网站怎么做seo展览 网站源码
  • 个人网站做经营性网站站长工具
  • 怎么做网站的代理商创建公司网站需要注意什么
  • 网站建设和谷歌优化wordpress怎样添加模板
  • 无锡营销型网站建设做离心开关的企业的网站
  • 网站整体运营思路业余从事网站开发
  • 网站建设制作公司都选万维科技单个网页打不开是什么原因
  • 网站建设电话合肥市城乡建设局2019网站
  • 马鞍山网站开发怎么运营一个淘宝店铺
  • 类似网站的建设广州做网站专业公司
  • 建立网站要钱吗大连市建设学校网站
  • 网站自助建站企业登记信息查询
  • 网站首页布局设计模板wordpress首页多样式
  • 泉州app网站开发价格新手做淘宝客网站教程
  • 如何用网站做课件内江市网站建设
  • 莱州网站建设制作北京市住房和城乡建设厅
  • 网站开发技术案例自助建站系统模板
  • 企业网站建设方案优化专业的企业级cms建站系统
  • 网页设计网页标签图标怎么做天津网络排名优化
  • php图片网站源码黑河做网站公司
  • php网站建设设计方法服务器吗放几个网站
  • linux网站如何做ip解析wordpress自定义排序
  • 新楼盘网站模板南宁兴宁区建设局网站
  • 网站被百度蜘蛛爬了多久放出来网站建设 源码
  • 西安搭建网站苏州比较大的设计公司
  • 科技服务 网站建设app 小程序wordpress整合ck播放器