操作符(运算符)重载 或者叫 二元运算符 operator + 与 转换式操作符 implicit operator explicit operator
static void Main(string[] args) { rational r1 = new rational(5); rational r2 = new rational(51); rational r3 = r1 + r2; // rational rational 回来 rational Console.WriteLine(r3.Value); Console.WriteLine(r1 - r2); // rational rational 回来 int B bb = new B(52); rational rr = new rational(1); B bsbs = bb / rr; // B rational 回来 B Console.WriteLine(bsbs); }
public class B { public B(int Nu) { Num = Nu; } public int Num { get; set; } } public sealed class rational { private int _value = 0; public int Value { get { return _value; } set { _value = value; } } public rational(int value) { this._value = value; } public rational() { } public static rational operator +(rational numl, rational numm2) { return new rational(numl.Value + numm2.Value); } public static int operator -(rational numl, rational numm2) {//1 public 2 static 3 方法 至少一个参数为 类的 类型rational return (numl.Value - numm2.Value); } public static B operator /(B b, rational r) { B b2 = new B(b.Num + r.Value); return b2; } }
static void Main(string[] args) { rational ri = ); opop p = (opop)ri; //过去 显式 Console.WriteLine(p.Name); p.Name = "; rational r2 = p; //回来 隐式 Console.WriteLine(r2.Value); //int n = 10; //rational r1 = n; //double d = (double)r1; }
public sealed class rational { ; public int Value { get { return _value; } set { _value = value; } } public rational(int value) { this._value = value; } public rational(double value) { this._value = (int)value; } public rational() { } public int ToInt() { return _value; } public double ToDouble() { return (double)_value; } public static rational operator +(rational num1, rational num2) { rational result = new rational(num1.Value + num2.Value); return result; } public static implicit operator rational(int value) { return new rational(value); } public static implicit operator rational(double value) { return new rational(value); } public static explicit operator int(rational value) { return value.ToInt(); } public static explicit operator double(rational value) { return value.ToDouble(); } // public static explicit operator opop(rational r1) { //过去 显式 opop o = new opop(r1.Value + ""); return o; } public static implicit operator rational(opop op1) { //回来 隐式 1 public 2 static 3 可理解为 方法名 是返回类型 参数为待转换的类型 rational r1 = new rational(int.Parse(op1.Name)); return r1; } } public class opop { public opop(string str) { Name = str; } public string Name { get; set; } }
操作符(运算符)重载 或者叫 二元运算符 operator + 与 转换式操作符 implicit operator explicit operator的更多相关文章
- C++ 运算符重载一(二元运算符重载)
//二元运算符重载 #include<iostream> using namespace std; class Point { public: Point(int x,int y){ th ...
- C++:成员运算符重载函数和友元运算符重载函数的比较
5.2.4 成员运算符重载函数和友元运算符重载函数的比较 (1)对双目运算符而言,成员运算符重载函数参数表中含有一个参数,而友元运算符重载函数参数表中有两个参数:对于单目运算符而言,成员运算符重载函数 ...
- C++:运算符重载函数之成员运算符重载函数
5.2.3 成员运算符重载函数 在C++中可以把运算符重载函数定义为某个类的成员函数,称之为成员运算符重载函数. 1. 定义成员运算符重载函数的语法形式 (1)在类的内部,定义成员运算符重载函数的格式 ...
- 从零开始学C++之运算符重载(三):完善String类([]、 +、 += 运算符重载)、>>和<<运算符重载
在前面文章中使用过几次String类的例子,现在多重载几个运算符,更加完善一下,并且重载流类运算符. []运算符重载 +运算符重载 +=运算符重载 <<运算符重载 >>运算符重 ...
- 完善String类([]、 +、 += 运算符重载)、>>和<<运算符重载
在前面文章中使用过几次String类的例子,现在多重载几个运算符,更加完善一下,并且重载流类运算符. []运算符重载 +运算符重载 +=运算符重载 <<运算符重载 >>运算符重 ...
- C++ 运算符重载时,将运算符两边对象交换问题.
在C++进行运算符重载时, 一般来讲,运算符两边的对象的顺序是不能交换的. 比如下面的例子: #include <iostream> using namespace std; class ...
- C++:运算符重载函数之友元运算符重载
5.2.2 友元运算符重载函数 运算符重载函数一般采用两种形式定义: 一是定义为它将要操作的类的成员函数(简称运算符重载函数): 二是定义为类的友元函数(简称为友元运算符重载函数). 1.定义友元运算 ...
- C++学习之路—运算符重载(二)运算符重载作为类的成员函数和友元函数
(根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 对运算符重载的函数有两种处理方式:(1)把运算符 ...
- C++ Primer注意事项11_运算符重载_算术/关系运算符_下标运算符
1.算术/关系运算符 平时,定义成非成员函数以同意左右側运算对象进行转换.由于这些运算符一般不须要改变运算对象的状态,所以形參都是常量的引用. 以"+"号运算符为例: Person ...
随机推荐
- Java程序执行时间
第一种是以毫秒为单位计算的. Java代码 //伪代码 long startTime=System.currentTimeMillis(); //获取开始时间 doSomeThing(); ...
- 解决viewpager+多个fragment+listview,listview展示内容高度不自适应出现多余空白问题
一.重写viewpager import android.content.Context; import android.support.v4.view.ViewPager; import andro ...
- (31)C#时间
一. DateTime dt = DateTime.Now 对象 1.获取当前时间 Console.WriteLine(dt.Year+"年"); //当前年份 Console.W ...
- Codeforces Round #445 B. Vlad and Cafes【时间轴】
B. Vlad and Cafes time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Ansible 删除多个文件或目录
翻译和转载该网页内容 http://www.mydailytutorials.com/ansible-delete-multiple-files-directories-ansible/ 背景 ans ...
- Codeforces 920 E Connected Components?
Discription You are given an undirected graph consisting of n vertices and edges. Instead of giving ...
- 【bzoj4950】【 [Wf2017]Mission Improbable】贪心+二分图匹配
(上不了p站我要死了,侵权度娘背锅) Description 那是春日里一个天气晴朗的好日子,你准备去见见你的老朋友Patrick,也是你之前的犯罪同伙.Patrick在编程竞赛 上豪赌输掉了一大笔钱 ...
- 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- JAVA 线程池以及其他
http://www.cnblogs.com/dolphin0520/ http://www.cnblogs.com/absfree/category/801869.html
- UBIFS - UBI File-System
参考:http://www.linux-mtd.infradead.org/doc/ubifs.html#L_raw_vs_ftl UBIFS - UBI File-System Table of c ...