色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

什么是運算符重載

汽車電子技術 ? 來源:程序猿知秋 ? 作者: 程序猿知秋 ? 2023-01-20 15:30 ? 次閱讀

運算符重載

基本概念

  • 我們可以重定義或重載 C# 中內(nèi)置的運算符
  • 可以使用用戶自定義類型的運算符
  • 重載運算符是具有 特殊名稱的函數(shù) ,是通過關鍵字 ** operator **后跟運算符的符號來定義的
  • 與其他函數(shù)一樣,重載運算符有****返回類型和參數(shù)列表
  • 使用 operator 關鍵字來聲明運算符。 運算符聲明必須符合以下規(guī)則
    • 同時包含 public 和 static 修飾符
    • 一元運算符有一個輸入?yún)?shù),二元運算符有兩個輸入?yún)?shù)
  • **語法示例: 正面的class 表示用戶自定義的類,以下是重載 + **
public static Class operator+ (Class a, Class b)

使用案例

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Car car1 = new Car();
            car1.length=2;
            car1.speed = 120;


            Car car2 = new Car();
            car2.length = 3;
            car2.speed = 90;
            // 將兩個car對象相加
            Car c3 = car1 + car2;
            Console.WriteLine(c3);  // output: length:5,speed:210
        }
    }




    public class Car
    {
        /// 
        /// 長度
        /// 
        public int length;
        /// 
        /// 速度
        /// 
        public int speed;


        // 重載 對象的 +
        public static Car operator +(Car c1, Car c2)
        {
            Car c3 = new Car();
            c3.length = c1.length + c2.length;
            c3.speed = c1.speed + c2.speed;
            return c3;
        }


        // 重寫tostring方法,方便打印對象信息
        public override string ToString()
        {
            return string.Format("length:{0},speed:{1}", this.length, this.speed);
        }


    }
}

**如果不使用重載也想要達成以上效果,作法如下:

**

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Car car1 = new Car();
            car1.length=2;
            car1.speed = 120;


            Car car2 = new Car();
            car2.length = 3;
            car2.speed = 90;

            // 將兩個car對象相加
            Car car3 = new Car();
            car3.length = car1.length + car2.length;
            car3.speed = car1.speed + car2.speed;
            Console.WriteLine(car3);  // output: length:5,speed:210
        }
    }




    public class Car
    {
        /// 
        /// 長度
        /// 
        public int length;
        /// 
        /// 速度
        /// 
        public int speed;


        // 重載 對象的 +
        public static Car operator +(Car c1, Car c2)
        {
            Car c3 = new Car();
            c3.length = c1.length + c2.length;
            c3.speed = c1.speed + c2.speed;
            return c3;
        }


        // 重寫tostring方法,方便打印對象信息
        public override string ToString()
        {
            return string.Format("length:{0},speed:{1}", this.length, this.speed);
        }


    }
}

可以看到效果,如果不重載運算符,則需要在外面調(diào)用時 自己去計算,以上只有一處調(diào)用,是否重載無所謂,但是如果 調(diào)用的地方多了,每個調(diào)用的地方都得寫此邏輯就太麻煩了,所以用好運算符重載還是很好用的

重載多個運算符實現(xiàn)

using System;


namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Car car1 = new Car();
            car1.length = 2;
            car1.speed = 120;
            // 利用重載的 true/false 運算符
            if (car1)
            {
                Console.WriteLine(car1);  // output: length:2,speed:120
            }



            Car car2 = new Car();
            car2.length = 3;
            car2.speed = 90;
            // 將兩個car對象相加
            Car c3 = car1 + car2;
            Console.WriteLine(c3);  // output: length:5,speed:210


            // 相減
            c3 = car1 - car2;
            Console.WriteLine(c3);  // output: length:-1,speed:30


            // 比較
            if (car1 != car2)
            {
                Console.WriteLine("我們不相等");
            }


        }
    }




    public class Car
    {
        /// 
        /// 長度
        /// 
        public int length;
        /// 
        /// 速度
        /// 
        public int speed;


        // 重載 對象的 +
        public static Car operator +(Car c1, Car c2)
        {
            Car c3 = new Car();
            c3.length = c1.length + c2.length;
            c3.speed = c1.speed + c2.speed;
            return c3;
        }


        // 重載 對象的 -
        public static Car operator -(Car c1, Car c2)
        {
            Car c3 = new Car();
            c3.length = c1.length - c2.length;
            c3.speed = c1.speed - c2.speed;
            return c3;
        }


        // 重載 對象的 ==, 注 == 和 != 是一對的,重寫了一個,兩個就都必須重寫
        public static bool operator ==(Car c1, Car c2)
        {
            return c1.length == c2.length && c1.speed == c2.speed;
        }


        // 重載 對象的 !=
        public static bool operator !=(Car c1, Car c2)
        {
            return c1.length != c2.length || c1.speed != c2.speed;
        }


        // 重載 對象的 true,  true和false也是一對
        public static bool operator true(Car c1)
        {
            return c1.length != 0  || c1.speed != 0;
        }


        // 重載 對象的 false
        public static bool operator false(Car c1)
        {
            return c1.length == 0 && c1.speed == 0;
        }


        // 重寫tostring方法,方便打印對象信息
        public override string ToString()
        {
            return string.Format("length:{0},speed:{1}", this.length, this.speed);
        }


    }
}

可重載和不可重載的運算****符

可被重載的 不可被重載的
+, -, !, ~, ++, --,*, /, % &&,
==, !=, <, >, <=, >= =, ., ?:, ->, new, is, sizeof, typeof
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關注

    關注

    3

    文章

    4338

    瀏覽量

    62745
  • 運算符
    +關注

    關注

    0

    文章

    172

    瀏覽量

    11093
  • 重載
    +關注

    關注

    0

    文章

    8

    瀏覽量

    2773
收藏 人收藏

    評論

    相關推薦

    C++虛函數(shù)在多態(tài)中的運用

      直觀的說,就是向不同的對象發(fā)送一個消息,不同的對象在接收消息以后有不同的行為;函數(shù)重載運算符重載都是多態(tài)現(xiàn)象。
    發(fā)表于 10-25 17:32 ?543次閱讀
    C++虛函數(shù)在多態(tài)中的運用

    C++重載運算符重載函數(shù)詳解

    在計算機程序設計中,運算符重載(英語:operator overloading)是多態(tài)的一種。這里,運算符(比如+,=或==)被當作多態(tài)函數(shù),它們的行為隨著其參數(shù)類型的不同而不同。運算符
    發(fā)表于 09-20 17:14 ?2016次閱讀

    [7.1.1]--6.1運算符重載概述

    編程語言C++
    jf_75936199
    發(fā)布于 :2023年01月10日 10:41:29

    [7.3.1]--6.3成員運算符重載函數(shù)

    編程語言C++
    jf_75936199
    發(fā)布于 :2023年01月10日 10:43:09

    [2.2.1]--運算符重載的規(guī)則

    C語言
    jf_75936199
    發(fā)布于 :2023年02月24日 15:47:51

    [13.1.4]--友元和運算符重載

    程序設計面向對象編程
    jf_75936199
    發(fā)布于 :2023年03月06日 23:04:21

    [13.3.2]--插入運算符和提取運算符重載

    程序設計面向對象編程
    jf_75936199
    發(fā)布于 :2023年03月06日 23:09:11

    [8.5.1]--運算符重載_clip001

    python
    jf_75936199
    發(fā)布于 :2023年03月13日 14:19:38

    [8.5.1]--運算符重載_clip002

    python
    jf_75936199
    發(fā)布于 :2023年03月13日 14:20:19

    函數(shù)運算符重載(2)#程序設計

    程序設計
    未來加油dz
    發(fā)布于 :2023年07月10日 16:27:56

    運算符重載(1)#程序設計

    程序設計
    未來加油dz
    發(fā)布于 :2023年07月10日 16:46:35

    賦值運算符重載(2)#程序設計

    程序設計
    未來加油dz
    發(fā)布于 :2023年07月10日 16:58:29

    田洪川VS2005視頻教程:重載方法以及運算符重載

    本系列VS2005現(xiàn)在共分為9個小節(jié),分別為VS2005軟件前期準備工作,包括軟件安裝、VS工作環(huán)境配置、創(chuàng)建項目程序及基本功能、工具使用;第二部分,將講解VS課程編程語言C#基本的語法、對象創(chuàng)建及使用、事件驅動編程與回送、類關系及類事件、VS2005控件介紹及相關使用方法、數(shù)據(jù)庫連接與讀取方法、XML格式概述及數(shù)據(jù)存取、文件管理系統(tǒng)應用等等...
    發(fā)表于 09-26 19:10 ?584次閱讀

    C++程序設計教程之運算符重載的詳細資料說明

    本文檔詳細介紹的是C++程序設計教程之運算符重載的詳細資料說明主要內(nèi)容包括了:1. 什么是運算符重載,2. 運算符
    發(fā)表于 03-14 16:04 ?4次下載
    C++程序設計教程之<b class='flag-5'>運算符</b><b class='flag-5'>重載</b>的詳細資料說明

    干貨:三大實例講解三種C++運算符重載

    本章節(jié)主要講解是運算符重載運算符重載是賦予運算符能操作自定義類型的功能。C++運算符
    的頭像 發(fā)表于 09-30 16:59 ?3470次閱讀
    干貨:三大實例講解三種C++<b class='flag-5'>運算符</b><b class='flag-5'>重載</b>
    主站蜘蛛池模板: 内射气质御姐视频在线播放| FREE乌克兰嫩交HD| 99视频精品全部 国产| 国产精品久久久久精品A片软件| 超碰97人人做人人爱网站| 妓女嫖客叫床粗话对白| 日本强好片久久久久久AAA| 一个人免费完整观看日本 | 精品九九视频| 三级黄色在线视频| 91福利国产在线观看网站| 国产在线高清视频无码不卡| 人驴交f ee欧美| 69精品人人人人| 花蝴蝶在线高清视频观看免费播放| 青青热久精品国产亚洲AV无码| 在镜头里被CAO翻了H| 国产午夜不卡在线观看视频666| 秋霞影院福利电影| 69精品国产人妻蜜桃国产毛片| 精品免费久久久久久成人影院| 偷拍精品视频一区二区三区| CHINA末成年VIDEO学生| 浪荡女天天不停挨CAO日常视| 亚洲精品123区| 国产乱码一区二区三区| 日日操夜夜摸| YY600800新视觉理论私人| 麻豆AV福利AV久久AV| 妖精视频在线观看高清| 国产午夜视频在线| 天美传媒在线观看完整高清| 超碰日韩人妻高清视频| 女人18毛片| 8x8x我要打机飞在线观看| 久久久黄色片| 野花韩国高清完整版在线观看5| 国产在线精品亚洲| 小小水蜜桃3视频在线观看| 国产成人亚洲精品老王| 色大姐综合网|