运算符重载!

原创 2007年09月24日 10:30:00
所谓运算符重载就是通过我们设计的类,使用标准的运算符,例如+ -等等.看了一些概念性的定义,很晕,不懂,下面就一个简单的例子可以清楚的告诉我们什么是运算符重!
namespace ConsoleTest
...{
    
class Program
    
...{
        
public int val;       
        
static void Main(string[] args)
        
...{
            Program p1 
= new Program();
            Program p2 
= new Program();
            p1.val 
= 1;
            p2.val 
= 2;
            
           Program p3 
= p1 + p2;//+ 运算符不能应用于 Program 类型操作数

        }


    }

}

我们要实现上面的操作就要重载+运算符.

 

namespace ConsoleTest
...{
    
class Program
    
...{
        
public int val;

        
public static Program operator +(Program p1, Program p2)
        
...{
            Program p3 
= new Program();
            p3.val 
= p1.val + p2.val;
            
return p3;
        }

        
static void Main(string[] args)
        
...{
            Program p1 
= new Program();
            Program p2 
= new Program();
            p1.val 
= 1;
            p2.val 
= 2;
            
//Program p3 = new Program();
           Program p3 = p1 + p2;
        }


    }

}

这样+运算符就被重载了,类似的我们可以重载其它的一元,二元运算符,很容易理解吧!

ps:运算符重载必须是static.

才知道java竟然没有运算符重载

写复数类的乘法和除法真的是要写死人了。。。public class Complex { private Fraction realPart; private Fraction image...
  • liaotl10
  • liaotl10
  • 2017年07月11日 22:16
  • 842

c加加+-*/前置++后置++运算符重载

运算符重载注意点: 1.算术和关系操作符返回的是一个左值或右值,而不是一个引用 2.赋值操作符一定要定义为成员函数如“=” 3.一般而言,赋值操作符和复合赋值操作符应返回左操作数的引用如"="和''+...
  • littleprince1
  • littleprince1
  • 2017年04月18日 16:46
  • 806

类的运算符重载

类的运算符重载 参考书籍 :C++ 世界的两本世界名著 [C++ 程序设计语言 ] 和 [C++primer]重载知识点 1. 重载运算符 1.1 引言 1.2 限定及重载语法 1.2.1 限定 1....
  • smy0816
  • smy0816
  • 2011年05月06日 19:15
  • 3732

运算符重载(一般、关系、逻辑、单目、箭头操作符)

c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。由于一般数据类型间的运算符没有重载的必要,...
  • duzejie
  • duzejie
  • 2016年10月07日 18:23
  • 975

C++基础篇--运算符重载

运算符重载没有多高深复杂,但牵扯到的相关概念和语法变化不少,如果这块基石不牢固,读复杂C++代码时就只有雾里看花的份。 运算符重载由来     C/C++中所有运算符(+-*/等)默认只用于基本数据类...
  • ipmux
  • ipmux
  • 2015年09月01日 15:04
  • 976

关于c++的运算符重载那些事

搞c++有一段时间了,今天突然要重载一个运算符,发现自己有点忘了,遂查查资料做一下c++运算符重载的小总结。 一、何为运算符重载 运算符的重载是c++语言特有的,java什么的是没有运算符重载的,所以...
  • uestclr
  • uestclr
  • 2016年04月16日 21:59
  • 3255

关于运算符重载的两种方式的优缺点比较

大家都知道一般常用两种重载运算符的方式分别是: 1.作为成员函数重载运算符.    2.作为友元函数重载运算符. 这里我给个例子. 这里是DoubleA class DoubleA { publi...
  • y1196645376
  • y1196645376
  • 2016年03月31日 17:06
  • 2921

C++_运算符重载_前缀自增与后缀自增

由于前缀自增与后缀自增在如果通过运算符重载在形式上相同,都为 以Date类为例 Date& operator++(Date &)(全局函数)/ Date& operator++( )(成员函数)无法区...
  • u010003835
  • u010003835
  • 2015年08月06日 18:16
  • 2754

C++实践参考——分数类中的运算符重载

【项目1-分数类中的运算符重载】   (1)实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。class CFraction { private: ...
  • sxhelijian
  • sxhelijian
  • 2016年05月19日 21:44
  • 3252

LintCode-赋值运算符重载

实现赋值运算符重载函数,确保: 新的数据可准确地被复制旧的数据可准确地删除/释放可进行 A = B = C 赋值 样例 如果进行 A = B 赋值,则 A 中的数据被删除,取而代...
  • wangyuquanliuli
  • wangyuquanliuli
  • 2015年05月21日 18:14
  • 1858
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:运算符重载!
举报原因:
原因补充:

(最多只允许输入30个字)