会员
周边
众包
新闻
博问
闪存
赞助商
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
规格严格-功夫到家-哈工大威海人
......
博客园
首页
新随笔
联系
订阅
管理
C++ operator操作符重载(++,--,-,+,())
C++中++,--操作符重载需要说明是++(--)在操作数前面,还是在操作数后面,区别如下:
代码经过测试无误(起码我这里没问题^_^)
Code
1
#include
<
iostream
>
2
#include
<
cstdlib
>
3
using
namespace
std;
4
template
<
typename T
>
class
A
5
{
6
public
:
7
A(): m_(
0
)
{
8
}
9
//
+
10
const
T
operator
+
(
const
T
&
rhs)
11
{
12
//
need to be repaired , but see it is only a demo
13
return
(
this
->
m_
+
rhs);
14
}
15
//
-
16
const
T
operator
-
(
const
T
&
rhs)
{
17
//
need to be repaired , but see it is only a demo
18
return
(
this
->
m_
-
rhs);
19
}
20
T getM()
{
21
return
m_;
22
}
23
24
//
++在前的模式,这里返回的是引用 ,准许++++A
25
A
&
operator
++
()
{
26
(
this
->
m_)
++
;
27
return
*
this
;
28
}
29
//
++ 在后,这里返回的是一个新的A类型变量,且不可改变
30
//
目的是防止出现 A++++情况
31
const
A
operator
++
(
int
a)
{
32
A
<
T
>
b
=
*
this
;
33
(
this
->
m_)
++
;
34
return
b;
35
}
36
private
:
37
T m_;
38
}
;
39
40
41
int
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
}
posted @
2009-10-21 16:28
规格严格-功夫到家
阅读(
657
) 评论(
0
)
编辑
收藏
举报
刷新页面
返回顶部
公告