运算符重载实例——Nybble
来源:互联网 发布:网络的攻击与防范 编辑:程序博客网 时间:2024/05/02 05:01
<span style="font-size:18px;">这是书上的实例,自己动手实践了一下,发现还是有些问题的,真的需要上手打一遍才能理清楚。</span>
<span style="font-size:18px;">/*Nybble.cs*/using System;/* * 用4个位表示的无符号整数,前4位置0; * */class Nybble{ int value; #region 成员函数 public Nybble() { this.value = 0; } public Nybble(int N) { this.value = N & 0xF; }//隐式转换</span></span>
<span style="font-size:18px;"> public static implicit operator int(Nybble ob) { return ob.value; } public static implicit operator Nybble(int N) { return new Nybble(N); }</span>
<span style="font-size:18px;">//运算符重载,包括+ < > <= >= == != ++ --等,全部都是static静态的,不知道好处是什么。 public static int operator +(Nybble ob, int N) { return ob.value + N; } public static int operator +(int N, Nybble ob) { return ob.value + N; } public static Nybble operator +(Nybble ob1, Nybble ob2) { Nybble result = new Nybble(); result.value = ob1.value + ob2.value; result.value &= 0xF; return result; } public static bool operator <(Nybble ob1, Nybble ob2) { return ob1.value < ob2.value; } public static bool operator >(Nybble ob1, Nybble ob2) { return ob1.value > ob2.value; } public static bool operator <=(Nybble ob1, Nybble ob2) { return ob1.value <= ob2.value; } public static bool operator >=(Nybble ob1, Nybble ob2) { return ob1.value >= ob2.value; } public static bool operator ==(Nybble ob1, Nybble ob2) { return ob1.value == ob2.value; } public static bool operator !=(Nybble ob1, Nybble ob2) { return ob1.value != ob2.value; } public static Nybble operator ++(Nybble ob) { Nybble result = new Nybble(); result.value = ++ob.value; result.value &= 0xf; return result; } public static Nybble operator --(Nybble ob) { Nybble result = new Nybble(); result.value = --ob.value; result.value &= 0xf; return result; } #endregion}</span>
<span style="font-size:18px;">下面是这个类的小Demo。也就简单的创建了三个实例A,B,C,一个用默认构造,两个用自己写的带int参数的构造函数。</span>
<span style="font-size:18px;">需要注意的是,初始化的值不能超过15,因为只用4bit表示(0000(2)~1111(2)),如果是16以上的话,就用到5bit(16=10000(2))</span>
<span style="font-size:18px;">执行value &= 0xF;时高4位会被置0。(00010000 & 00001111 = 00000000)</span>
<span style="font-size:18px;">/*NybbleDemo.cs*/using System;class NybbleDemo{ public static int Main() { Nybble A = new Nybble(); Nybble B = new Nybble(10); Nybble C = new Nybble(2); Console.WriteLine(A); Console.WriteLine(B); Console.WriteLine(C); Console.WriteLine(A+B+C);//执行此句时,先算A+B,结果是一个Nybble的引用(result),再执行result+C,返回值也是一个Nybble引用(result2),再隐式转换为int型以供输出。 return 0; }}</span>
0 0
- 运算符重载实例——Nybble
- C++实例——运算符重载
- 运算符重载实例
- 运算符重载实例
- 运算符重载实例
- python运算符重载实例
- C++运算符重载实例
- 运算符重载实例:数组
- c++运算符重载+实例
- C# 运算符重载实例
- c++运算符重载实例
- c++运算符重载实例
- 基本运算符重载实例
- C++运算符重载——重载二元运算符
- C++中运算符重载实例
- C++编程实例-运算符重载
- ADA程序实例(运算符重载)
- 运算符重载分析与实例
- 职业院校人体解剖学实验室文化建设研究
- 第2章 2.10 Servlet介绍
- linux学习之shell脚本 ------- 控制流结构
- JVM学习笔记(一)------基本结构
- Java虚拟机(六):Java编程和执行过程
- 运算符重载实例——Nybble
- CSS从大图片上截取小图标的使用
- USACO 5.3 Network of Schools
- Android 自定义View (一)
- 寒假项目1-动态链表体验(改造)(5)
- 人体解剖学标本长廊的构成、管理及其优势
- 在这个梦想冷却的年代
- Sybase: get the list of users who have sa_role role
- akw获取外部变量