c#的逻辑运算符重载

不光是C++,实际上C#中同样可以对操作符重载。如:
namespace Com.EVSoft.Math
{
  public class Vector3:BaseObject
  {
    ...
    ......
    ..
    public static Vector3 operator + (Vector3 lVector,double  rhs);
    public static Vector3 operator + (Vector3 lVector,Vector3 rVector);
    public static bool    operator ==(Vector3 lVector,Vector3 rVector);
    ...
    ......
  }
}

上面的代码是一个向量类,分别针对运算符和操作符进行了重载,重载操作符或运算符意味着改变了操作符原有的意思。例如,
...
......
..
Vector3 vec=null;//赋值运算符,是否是原有的意思需要开发者自己看它的定义
if(vec==null)    //逻辑运算符,按照Vector3的重载的定义,这里肯定要报错
{
  vec=new Vecotr3();
}

时间: 2024-10-29 19:09:39

c#的逻辑运算符重载的相关文章

操作符重载operator

发现一篇好文: 转载: 本文主要整理自C++之运算符重载及C++运算符重载总结. 什么是运算符重载 运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用域不同类型的数据导致不同行为的发生.如:   在这个程序里"+"既完成两个整形数的加法运算,又完成了双精度型的加法运算.为什么同一个运算符"+"可以用于完成不同类型的数据的加法运算?这是因为C++针对预定义基本数据类型已经对"+"运算符做了适当的重载.在编译程序编译不同类型数据的加法表达式时

C++对bool operator < (const p &a)const的运算符重载详解

struct node { //定义一个结构体node(节点) int x; int y; int len; //node中有3个成员变量x,y,len bool operator <(const node &a)const {//重载<操作符.可以对两个node使用<操作符进行比较 return len<a.len; } }; 括号中的const表示参数a对象不会被修改,最后的const表明调用函数对象不会被修改! 重载运算符的介绍 C++中预定义的运算符的操作对象只能是

第十章 运算符重载

第十章 运算符重载 1.运算符重载的方法 (实质:函数重载) *一般格式: 函数类型名operator 运算符名称(参数表){函数体:} 2.运算符重载的规则 *不允许定义新的运算符 *允许重载的运算符 双目运算符 +(加法)  - (减法)  * (乘法) / (除法)   %(取模) 关系运算符 ==(等于) != (不等)  <   >   <=   >= 逻辑运算符 ||(或)   && (与)  !(非) 单目运算符 + (正)  -(负)   *(指针)

运算符重载与sort()

运算符重载与sort() 二话不说上代码: 1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 struct type_1 5 { 6 int a,b; 7 type_1(int x=0,int y=0):a(x),b(y){} 8 }; 9 bool compare(type_1 a,type_1 b) 10 { 11 return a.a<b.a; 12 } 13 bool opera

C++之------运算符重载

①  什么是运算符重载? 何为C++的运算符重载呢? 其实就是运算符给它重新赋予新的含义或者多重含义.让它有另外一种新的功能. 为什么需要运算符重载? 面向对象中为了实现类的多态性,我们就引用了运算符重载 程序中可以利用“+”.“—” 对整数.单精度.双精度以及指针进行加法和减法运算等 例如: 1 int a = 1+2; //对整数加 2 double d = 1.0+2.54; //对双精度加 3 int por[10]; 4 int *p = por; 5 p = p- 1; //对指针减

C++笔记(3):运算符重载

运算符重载 1.运算符重载基础 2.运算符重载的规则 3.重载双目运算符 4.重载单目运算符 5.重载流插入和提取运算符 6.类型转换 7.定义自己的string类 ------------------------------------------------------------------------------------------------------------------------------- 1.运算符重载基础 运算符重载就是对已有的运算符赋予新的含义,实现新的功能.前

【C++知识汇总】运营商 &amp;amp; 运算符重载

[运算符] 在进行运算时,假设右括号的话我们知道先运算哪个,那假设没有括号了.算术运算符,关系运算符,逻辑运算符,位运算符.赋值运算符,++.--运算符等等,那么多的运算符.我们先算哪边.也就是这些运算符的优先级怎么排序呢? 优先级 操作符 描写叙述 样例 结合性 1 () [] -> . :: ++ -- 调节优先级的括号操作符 数组下标訪问操作符 通过指向对象的指针訪问成员的操作符 通过对象本身訪问成员的操作符 作用域操作符 后置自增操作符 后置自减操作符 (a + b) / 4; arra

深入理解运算符的重载

*运算符重载: 1.运算符重载就是赋予已有的运算符多重含义,即多种功能. 2.运算符重载的目的:通过运算符的重载即重新定义使得其能够用于特定类的对象执行特定的功能. 3.对于运算符的重载首先要关心的就是那些运算符能够重载,那些不能重载: 能够重载的运算符: (1).算术运算符:+,-,*,/,%,++,--: (2)位操作运算符:&,|,^,~,<<,>>: (3)逻辑运算符:!,&&,||: (4)比较运算符:>,<,>=,<=,=

C++11(13):重载运算与类型转换

除了重载的函数调用运算符operator()之外,其他重载运算符不能含有默认实参. 当以个重载的运算符是成员函数时,this绑定到左侧运算对象.成员运算符函数的(显式)参数比运算对象的数量少一个. 当运算符作用于内置类型的运算对象时,我们无法改变运算的含义. ::              .*                     .          ?:   这四个运算符不能被重载. 我们只能重载已有的运算符,不能发明新的.优先级和结合律不变. data1 + data2; operat