运算符重载和自定义类型变换.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
运算符重载和自定义类型变换 运算符重载和自定义类型变换 运算符重载 运算符重载 运算符重载允许为运算指定用户定义的运算符实现,其中一个或两个操作数是用户定义的类或结构类型 所有一元和二元运算符都具有可自动用于任何表达式的预定义实现,可通过在类或结构中设置 operator 声明来引入用户定义的实现,其优先级总是高于预定义运算符实现 重载运算符便于程序员编写同时含有ADT和原生基本类型的中缀表达式,使程序更短,结构更清晰 复数类的四则运算 定义一个复数类Complex,将其多个实例进行四则运算,如何编程实现? static void Main() { Complex c1 = new Complex(1, 2); Complex c2 = new Complex(3.5, -2); Complex c3 = new Complex(-4, 23); //result=c1+c2-c3如何得到? Complex result = c1.Add(c2).Sub(c3); //将Add、Sub改成静态方法会不会更好些? Complex result2 = Complex.Sub(Complex.Add(c1, c2), c3); Console.WriteLine(result2.Print()); Console.Read(); } 在实现了需要的功能后,有没有一种让用户用更习惯、可读性、可编程性更好的方法来进行类似的运算呢? 解决方案:运算符重载! 可重载的运算符 一元运算符 + - ! ~ ++ -- true false 二元运算符 + - * / % | ^ == != = = public class Complex { public int real; public int imaginary; public Complex(){ } public Complex(int real, int imaginary) { this.real = real; this.imaginary = imaginary; } public static Complex operator +(Complex c1, Complex c2) { return new Complex(c1.real+c2.real, c1.imaginary +c2.imaginary); } public static Complex operator -(Complex c1, Complex c2) { return new Complex(c1.real-c2.real, c1.imaginary -c2.imaginary); } public override string ToString(){ return(String.Format({0} + {1}i, real, imaginary)); } } 二元运算符重载示例 注意函数原形! public static void Main() { Complex num1 = new Complex(3, 4); Complex num2 = new Complex(3, 4); Complex num3 = new Complex(-3, 4); Complex sum = num1.Add(num2); Complex result = num1 + num2 - num3; Console.WriteLine(First complex number: {0}, num1); Console.WriteLine(Second complex number: {0}, num2); Console.WriteLine(The sum of the two numbers: {0}, sum); Consol

文档评论(0)

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

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

1亿VIP精品文档

相关文档