WINDOWS程序设计之windows程序设计重载及模板.ppt

WINDOWS程序设计之windows程序设计重载及模板.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WINDOWS程序设计之windows程序设计重载及模板

Windows程序设计 2000.10 * * 第五章 重载 构造函数重载 成员函数重载 一般函数重载 操作符重载 操作符重载的一般规则 用成员函数重载操作符 用友元函数重载操作符 特殊操作符的重载 函数重载 5.1 操作符的特性 2 * ( A + B ) / ( C - D ) Div( Mult (2, Add ( A, B) ), Sub ( C, D ) ) operator / (operator * ( 2, operator + ( A, B ) ), operator - (C, D)) 一个表达式是一个嵌套的函数调用,操作符只是函数的语法变体,他们的基础语义是相同的。 由于C++对操作符的表示语法的限定,当将操作符写成函数调用表达形式时,必须在操作符之前冠以关键字 operator 。 使用标识符或操作符命名函数时,不同之处在于:以标识符命名的函数可以有任意个参数,而以操作符命名的函数只能有一个或两个参数;程序员不能定义新的操作符。 5.2 操作符重载的一般规则 1. 一元操作符与二元操作符 2. 操作符重载的一般规则 一元操作符:++ -- 二元操作符:+ - ? ? (1) 只能为类类型重载操作符。 (2)对于一元操作符,当重载为友元函数时,只能声明一个形参;当重载为成员函数时,不能再显式声明形参。 (3) 对于二元操作符,当重载为友元函数时,只能声明两个形参;当重载为成员函数时,只能显式声明一个形参。 (4) 操作符重载时,形参不能被声明为带有缺省参数值。 (5) 被重载的操作符保持原有的优先级和结合性,也不改变使用操作符的语法。 5.3 用成员函数重载操作符 type operator 操作符符号 ( 参数表 ) type :为返回值的函数类型,通常与类类型一致或为void 类型。 operator:重载操作符的关键字。 参数表:罗列的是该操作符所需的操作数。 若操作符是一元的,则参数表为空,当前对象作为操作符的单操作数;若操作符是二元的,则参数表中有一个操作数,当前对象作为此操作符的左操作数,参数表中的操作数作为此操作符的右操作数。 重载过的操作符与该操作符的本来含义不冲突,使用时只根据操作符出现的位置来判别具体执行哪一种运算。 例1: #include iostream.h class CPoint{ int x, y ; public: CPoint ( int vx, int vy) { x = vx ; y = vy ;} CPoint ( ){ x = 0; y = 0;} CPoint operator + ( CPoint p1); CPoint operator - ( CPoint p1); void Print () { coutxy“\n”;} }; CPoint CPoint :: operator + (CPoint p1) { CPoint p; p.x = x + p1.x; p.y = y + p1.y; return p; } CPoint CPoint :: operator - (CPoint p1) { CPoint p; p.x = x - p1.x; p.y = y - p1.y; return p; } main( ) { CPoint p1(10,10), p2(20,20) ; p1 = p1 + p2; p2 = p2 - p1; p1.Print( ); p2.Print( ); return ; } 例2. 类赋值( 重载操作符“=”) #include iostream.h class CMyClass { public: CMyClass ( int x = 0 ) ; CMyClass operator = ( CMyClass a ) ; void Print ( ) ; private: int m ; } CMyClass ::CMyClass ( int x ) { m = x ; } CMyClass CMyClass :: operator = (CMy

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档