易截截图软件、单文件、免安装、纯绿色、仅160KB

[C/C++ Digestion] – 重载操作符


[C/C++ Digestion] –
重载操作符
作者:
Jason Lee @
http://blog.csdn.net/jasonblog
日期:
2010-04-17
 
[1]
重载操作符
重载操作符从大的方面来讲可以分为两类:最好或必须作为类的成员函数的,以及相反。而具体地讲,最好或必须作为类的成员函数的有赋值操作符
( = )
、下标操作符
( [] )
、调用操作符
( () )
、成员访问箭头操作符
( ->
,目前列出的操作符都必须为成员函数
)
、星号解引用操作符
( * )
、复合赋值操作符
( +=

)
、自增、自减。其它的一些操作符,如算术操作符、相等操作符、关系操作符和位操作符,最好定义为非成员函数,在这种情况下,通常需要将其定义为类的友元函数。当然,还有一些是不建议重载的操作符,如逗号、取地址运算符和逻辑运算符等。
 
[2]
赋值操作符
赋值操作符必须是类的成员函数,因为编译器需要知道类是否有赋值操作符这个信息。并且,赋值操作符必须返回对
*this
的引用,也就是左操作数
(
对象自身
)
的引用。
同样的,复合赋值操作符也应返回对
*this
的引用。
如下是一段示例代码:
#include <iostream>
using namespace std;

class Demo {
public:
Demo():val(0){}
Demo(int t): val(t){}
Demo(const Demo &demo){ val = demo.val; }
~Demo(){}

Demo& operator=(const Demo &demo){
val = demo.val;
return *this;
}
Demo& operator+=(const Demo &demo){
val += demo.val;
return *this;
}

void showVal(){ cout << val << endl; }
private:
int val;
};

int main(){
Demo d1 = 2;// 首先调用接受整型参数的构造函数创建一个临时对象,再调用复制构造函数
d1.showVal();
Demo d2;
d2 += d1;// 使用复合赋值操作符
d2.showVal();
return 0;
}
通常定义了赋值操作符,那么接着定义复制构造函数和复合赋值操作符是比较合理的。接着又为了体现复制构造函数的运用,直接在实例化
d1
的时候使用了
Demo d1
= 2;
这样的语句,就类似
string
str = “hello”;
先调用对应参数的构造函数创建临时对象再调用复制构造函数。
 
[3]
下标操作符


相关文档:

转载:Hadoop 应该用C++实现,而不是Java

http://www.trendcaller.com/2009/05/hadoop-should-target-cllvm-not-java.html
Sunday, May 10, 2009
Hadoop should target C++/LLVM, not Java (because of watts)
< type="text/javascript">
digg_url="http://www.trendcaller.com/2009/05/hadoop-should-target-cllvm-not-java.html";
Over the years, ......

搭建eclipse下的c和c++开发环境


 
我们需要一个cdt,这个可以在Eclipse官网下载。
我们需要MinGW——C/C++编译平台,下载后需要安装,同时选中g++、MinGW Make,同时设置环境变量,将%MinGW_HOME%\bin设置到PATH中,然后我们可以通过命令行敲击gcc,看是否有效果。
我们需要gdb——C/C++调试平台,下载后安装,默认到MinGW_ ......

在2000和xp下如何将c盘fat32转换成ntfs


日志
分享给好友复制网址隐藏签名档大字体
上一篇 下一篇 返回日志列表
在2000和xp下如何将c盘fat32转换成ntfs
编辑 | 删除 | 权限设置 | 更多▼
更多▲
设置置顶
推荐日志
转为私密日志
Bandit    发表于2007年12月12日 09:12 阅读(9) 评论(0) 分类: 个人日记 权限: 公开
1、到命令提 ......

C和C++混用

Yes, C和C++混用的确是natural,毕竟绝大多数C++学习者都从C学起,C++兼容C就是为了降低学习门槛。但是C和C++混用却不一定是necessary。 我们把C和C++归为一类,通常写作C/C++,那是因为从语言角度讲C的问题就是C++的问题,但是反过来就不成立,因此具体到某个工程的时候,你在开工之前就必须决定到底使用C还是C++,或者说 ......

C 指针

#include
void printptr(int *i){
printf("&i of printfptr = %#X\n",&i);
printf("i of printfptr = %#X\n",i);
printf("*i of printfptr = %d\n",*i);
printf("i+1 of printfptr = %#X\n",i+1);
printf("*(i + 1) of printfptr = %d\n",*(i ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号