首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

基础备忘:非一般运算符重载

2012-09-17 
基础备忘:特殊运算符重载1.“”和“--”重载“”和“--”运算符的重载要区分前置和后置两种形式。例如,表达式a和

基础备忘:特殊运算符重载

1.“++”和“--”重载

“++”和“--”运算符的重载要区分前置和后置两种形式。例如,表达式"++a"和"a++"是不一样的。

如果不区分前置和抹黑,则使用operator++()或operator--()即可,否则要使用operator++()或operator--()来重载前置运算符,operator++(int)和operator--(int)来重载后置运算符,调用时,参数int被传递值0。例如:

声明和定义后置的"++"或"--"等运算符重载,必须含有形式参数,在调用时一般为指定实参0。

2.赋值运算符"="重载

事实上,对于任何一个类,如果没有用户自定义的赋值运算符函数,系统会自动地为其生成一个默认的赋值运算符函数,以完成数据成员之间的复制。如:

X & X::operator = (const X &source)

{

    //类对象成员之间的赋值语句

}

一旦类X的两个对象ob1和ob2已创建,就可用ob1=ob2进行赋值了。通常情况下,默认的赋值运算符函数就可以完成赋值任务,但在某些特殊情况下,例如,类中有一种指针类的形式,如果使用默认的运算符函数就会产生指针悬挂的错误。此时,就必须显式地定义一个赋值运算符重载函数,使参数赋值的两个对象有各自的存储空间,以解决这个问题。如:

在上述代码中,实现了下标运算符"[]"重载,其增加了甉数组下标是否越界的判断功能,下标越界返回"error",否则返回正常的数组元素值。在主函数mian中,分别用了两种方式调用下标运算符。此外,c++不允许把下标运算符函数作为外部函数来定义,只能是非静态的成员函数。

2楼lishehe前天 23:00
加油
Re: generalhking前天 23:51
回复lishehen多谢
1楼hejingyuan6前天 21:22
好东西
Re: generalhking前天 21:28
回复hejingyuan6n呵呵,谢谢。

热点排行