汇编网首页登录博客注册
wukong的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
文章收藏

[2012-03-06 19:54] 重载

运算符重载
运算符重载使得用户自定义的数据以一种更简洁的方式工作
运算符重载时,运算符函数只能定义为两种方式:
类的成员函数        
友员函数
这两种方式非常相似,关键区别在于
        成员函数具有 this 指针
        友员函数没有 this 指针
用成员函数重载运算符
运算符通过运算符函数重载。
运算符函数是一种特殊的成员函数,语法形式为:
        type   operator  @  ( 参数表 )
        {
            // 相对于该类定义的操作
        }
不能重载的运算符:.  ,  * ,   :: ,   ? ,    sizeof
重载应注意的问题:
              1、优先级和结合顺序不变
              2、不能改变目数
              3、类外定义至少有一个相应类的参数
运算符成员函数——调用成员函数的对象隐式成为表达式的第一个运算数
外部运算符函数——其第一个参数直接对应表达式的第一个运算数;
重载运算符的注意事项
运算符重载后,可以按它的表达方式使用
不能改变它们的优先级,不能改变算符要求的操作数数目
一个运算符被重载后,原有意义没有失去,只是定义了相对一特定类的一个新运算符

函数重载
两个以上的函数,取同一名字,只要使用不同类型的参数或参数个数不同,编译器便知道

在什么情况下该调用哪个函数,这就叫函数重载
寻找一个严格的匹配
通过内部转换寻找一个匹配
通过用户定义的转换寻找一个匹配
重载使用说明
重载函数仅仅返回类型不同是不行的
重载函数至少在参数个数,参数类型或顺序上有所不同
不能用typedef定义的类型来区分重载函数声明中的参数
typedef INT int;
void func(int x);   void func(INT x);
让重载函数执行不同的功能,是不好的编程风格
评论次数(2)  |  浏览次数(657)  |  类型(C++) |  收藏此文  | 

[  chinatree   发表于  2012-03-07 11:13  ]

重载不是相同函数只是参数不同吗?运算符怎么重载?作用是什么?

[  wukong   发表于  2012-03-07 19:38  ]

只是方便用户,对象可以向基本类型那样,进行+-等运算。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码