C++ operator操作符重载(++,--,-,+,())

C++中++,--操作符重载需要说明是++(--)在操作数前面,还是在操作数后面,区别如下:

代码经过测试无误(起码我这里没问题^_^)

ContractedBlock.gifExpandedBlockStart.gifCode
 1#include <iostream>
 2#include <cstdlib>
 3using namespace std;
 4template<typename T> class A
 5ExpandedBlockStart.gifContractedBlock.gif{
 6public:
 7ExpandedSubBlockStart.gifContractedSubBlock.gif    A(): m_(0){
 8    }

 9    // +
10    const T operator + (const T& rhs)
11ExpandedSubBlockStart.gifContractedSubBlock.gif    {
12           // need to be repaired , but see it is only a demo
13           return (this->m_ + rhs);
14    }

15    // -
16ExpandedSubBlockStart.gifContractedSubBlock.gif    const T operator - (const T& rhs){
17           // need to be repaired , but see it is only a demo
18             return (this->m_ - rhs);
19    }

20ExpandedSubBlockStart.gifContractedSubBlock.gif    T getM(){
21      return m_;
22    }

23    
24    // ++在前的模式,这里返回的是引用 ,准许++++A
25ExpandedSubBlockStart.gifContractedSubBlock.gif    A& operator ++ (){
26           (this->m_)++;
27           return *this;
28    }

29    // ++ 在后,这里返回的是一个新的A类型变量,且不可改变
30    // 目的是防止出现 A++++情况
31ExpandedSubBlockStart.gifContractedSubBlock.gif    const A operator ++(int a){
32           A<T> b = *this;
33           (this->m_)++;
34           return b;
35    }

36private:
37    T m_;
38}
;
39
40
41ExpandedBlockStart.gifContractedBlock.gifint main(void){
42    int i = 0;
43    cout<<++++i<<endl;
44    // i++++ is not allowed
45    A<int> a;
46    A<int> b = ++a;
47    cout<<b.getM()<<endl;
48    A<int> c = a++;
49    cout<<c.getM()<<endl;
50    cout<<a.getM()<<endl;
51    int t = a+2;
52    cout<<t<<endl;
53    system("pause");
54    return 0;    
55    
56}
 

 

转载于:https://www.cnblogs.com/diyunpeng/archive/2009/10/21/1587554.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS3-2

倒圆角 <!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>Document</title></head><body> <h1>圆角边框 —— border-radius IE9</h1> <!-- border-radius 是复合属性…

JavaFX技巧9:请勿混用Swing / JavaFX

JavaFX团队非常努力地说服我们&#xff0c;因为可以将Swing内容嵌入JavaFX UI中&#xff0c;因此可以很容易地从Swing迁移到JavaFX。 我必须承认&#xff0c;我从来没有亲自尝试过&#xff0c;但是根据我从客户那里得到的反馈&#xff0c;我只能建议不要将Swing和JavaFX混合使用…

[ZJJOI2013]K大数查询 整体二分

[ZJJOI2013]K大数查询 链接 luogu 思路 整体二分。 代码 #include <bits/stdc.h> #define ll long long using namespace std; const ll _5e57; ll read() {ll x0,f1;char sgetchar();for(;s>9||s<0;sgetchar()) if(s-) f-1;for(;s>0&&s<9;sgetchar(…

javax.el.PropertyNotFoundException: Property [Xxxx] not found on type Xxx.xxx.xxxx.Xxxx]的解决办法...

当我将后台数据传递给jsp&#xff0c;用${requestScope.user.Id}取值时报错&#xff0c; 最后发现entity实体类的属性不能首字母大写然后再小写&#xff0c;例如 int Age&#xff1b;这个就不行&#xff0c;必须写成int age; 最后问题解决了 转载于:https://www.cnblogs.com/Th…

react学习目录

前面的话 React是如今热门的两大前端框架之一&#xff0c;它设计思路独特&#xff0c;性能卓越&#xff0c;逻辑简单&#xff0c;受到了大量开发者的喜爱。Vue的基本思路是基于HTML模板的扩展&#xff0c;而React的基本思路是基于JS语言的扩展。由于Vue的写法更接近于传统&…

JavaFX技巧13:学习Modena CSS文件

到目前为止&#xff0c;这是最简单&#xff0c;最短的提示。 如果要执行以下任何操作&#xff1a; 了解如何使用CSS 使您的自定义控件看起来像标准控件 重用标准控件使用的SVG路径图形&#xff08;例如&#xff0c;滚动条箭头&#xff09; 弄清楚如何浏览标准控件的结构 确…

委托之异步

在 使用BackgroundWorker组件 一文中&#xff0c;阐述了在Winform编程中&#xff0c;使用BackgroundWorker组件实现异步调用&#xff0c;本文主要讲述利用委托实现异步。 以下描述摘抄于MSDN: 异步委托提供以异步方式调用同步方法的能力。 当同步调用委托时&#xff0c;Invoke(…

[NOI2010]超级钢琴 主席树

[NOI2010]超级钢琴 链接 luogu 思路 和12省联考的异或粽子一样。 堆维护n个左端点&#xff0c;每次取出来再放回去次 代码 #include <bits/stdc.h> #define ll long long using namespace std; const int _5e57,INF0x3f3f3f3f; int read() {int x0,f1;char sgetchar();fo…

【MSP430单片机】IIC 篇

一、转载于:https://www.cnblogs.com/wangsure/p/10734745.html

纹理文本

前面的话 本文将通过多种方式实现纹理文本的效果 背景裁切 对于实现纹理文本的效果&#xff0c;脑海中最直接能想到的办法可能是背景裁切background-clip 使用线性渐变来填充文本背景 <style>.box-with-text { background-image: linear-gradient(135deg,hsl(50, 100%, 7…

ORACLE EXP/IMP 说明

Oracle 的导出导入是一个很常用的迁移工具。 在Oracle 10g中&#xff0c;Oracle 推出了数据泵(expdp/impdp). 它可以通过使用并行&#xff0c;从而在效率上要比exp/imp 要高。 在Oracle 10g和11g的官方文档里没有搜到有关exp/imp 的说明&#xff0c; 在9i里找到了相关的使用说…

JAXB –新手的观点,第1部分

我知道你们很多人已经在想什么了&#xff0c;所以让我们摆脱它&#xff1a;“ JAXB&#xff1f; 如XML&#xff1f; 来吧&#xff0c;所有很棒的孩子都在使用JSON。” 关于XML与JSON的争论以及许多促成它的论据都已被很好地记录在案。 我不会花很多时间在这里重新整理它们。 我…

初识C语言(五)

自定义函数 C语言提供了大量的库函数&#xff08;右侧资料下载中有&#xff09;&#xff0c;比如stdio.h提供输出函数&#xff0c;但是还是满足不了我们开发中的一些逻辑&#xff0c;所以这个时候需要自己定义函数&#xff0c;自定义函数的一般形式&#xff1a; 注意&#xff1…

bzoj2916: [Poi1997]Monochromatic Triangles 思路

bzoj2916: [Poi1997]Monochromatic Triangles 链接 bzoj 思路 总方案\(C_{n}^{3}-异色三角形\) 异色三角形有个特点。 会出现两个点有两条不同色的边。 然后统计就行了。 代码 #include <bits/stdc.h> #define ll long long using namespace std; const int _5e37; int n…

nodeJS实现简单网页爬虫功能

前面的话 本文将使用nodeJS实现一个简单的网页爬虫功能 网页源码 使用http.get()方法获取网页源码&#xff0c;以hao123网站的头条页面为例 http://tuijian.hao123.com/hotrank var http require(http);http.get(http://tuijian.hao123.com/hotrank,function(res){var data ;…

不能上网原因(查)

实验室不能上网原因记录&#xff1a;如果不是你电脑原因&#xff0c;很可能就是路由器和dns设置的问题。。把dns设置为寝室校园网专用dns试试可能就好了。。 网页打不开&#xff0c;浏览器打不开&#xff0c;这是上网时候广大网友经常碰见的问题&#xff0c;本文将针对网页打不…

JavaFX技巧6:使用透明颜色

为用户界面元素选择正确的颜色始终是一个很大的挑战&#xff0c;但是当您开发可重用的框架控件时&#xff0c;开发人员就无法控制使用它们的应用程序的外观和感觉&#xff0c;这甚至更具挑战性。 尽管您可能总是将元素添加到默认的灰色背景之上&#xff0c;但是嵌入控件的开发人…

bzoj2287【POJ Challenge】消失之物 缺一01背包

bzoj2287【POJ Challenge】消失之物 缺一01背包 链接 bzoj 思路 分治solve(l,r,arr)表示缺少物品\([l,r]\)的dp数组arr。 然后solve(l,mid,arr)用右边的物品更新&#xff0c;solve(mid1,r,arr)同理。 \(f(n)2*f(\frac{n}{2})(r-l1)*m\) 复杂度为\(O(nmlog{n})\) 缺点最短路也是…

38.QT-QAxObject快速写入EXCEL示例

参考链接: https://blog.csdn.net/czyt1988/article/details/52121360 http://blog.sina.com.cn/s/blog_a6fb6cc90101gv2p.html 1. QAxObject介绍 在QT中,有个自带的QAxObject类,可以直接操作EXCEL 除此之外,当我们操作某个文件夹下的EXCEL的时候,都会在该文件夹下出现一个隐藏…

EA常见画图(类图、包图、构件图、状态图、顺序图、活动图)

EA常见活动图&#xff0c;状态图画法 类图:111&#xff08;1&#xff09;给关系添加注释&#xff08;2&#xff09;设置关系线样式 包图&#xff1a;&#xff08;1&#xff09;创建包图&#xff08;2&#xff09;在包中添加子包&#xff1a;&#xff08;3&#xff09;在包中添加…