Vulkan

运算符重载

CComplex& operator +=(const CComplex &r_c) 
CComplex operator +=(const CComplex)
就差一个&两者有什么不同哦?

记住:操作符重载函数,他只是一个函数,他是普通的函数,只是函数名称有一点特别而已,比如CComplex& operator +=(const CComplex &r_c) 这里的函数名称是operator +=,其他的东西都与函数完全一样,有反回类型,有形参。
你问的问题是有关参数传递问题,操作符函数可以按值传递也可以按引用传递,这要根据操作符而定,比如对于+运算符既可以把对象按值传递给操作符函数也可以按引用传递给操作符函数,但+操作符不会改变原操作数的值,所以应把传递类型声明为const,比如hyong operator +(const hyong &a, const hyong &b){}。但对于要改变其自身值的操作符比如++运算符,就必须传递引用,且不能把该引用声明为const类型,因为如果操作数按值传递的话,传递给操作数函数的将是一个对象的副本,两个副本是独立的,不能改变到原对象的值,所以应按引用传递对象,比如hyong operator ++(hyong &a){}。

若还有不明白之处可以参看本人的文章《C++操作符重载专题》里面有介绍。

posted on 2012-05-08 15:52  Vulkan  阅读(114)  评论(0编辑  收藏  举报

导航