在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

什么是運算符重載

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

運算符重載

基本概念

  • 我們可以重定義或重載 C# 中內置的運算符
  • 可以使用用戶自定義類型的運算符
  • 重載運算符是具有 特殊名稱的函數 ,是通過關鍵字 ** operator **后跟運算符的符號來定義的
  • 與其他函數一樣,重載運算符有****返回類型和參數列表
  • 使用 operator 關鍵字來聲明運算符。 運算符聲明必須符合以下規則
    • 同時包含 public 和 static 修飾符
    • 一元運算符有一個輸入參數,二元運算符有兩個輸入參數
  • **語法示例: 正面的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);
        }


    }
}

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

重載多個運算符實現

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
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4341

    瀏覽量

    62800
  • 運算符
    +關注

    關注

    0

    文章

    172

    瀏覽量

    11094
  • 重載
    +關注

    關注

    0

    文章

    8

    瀏覽量

    2773
收藏 人收藏

    評論

    相關推薦

    C++虛函數在多態中的運用

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

    C++重載運算符重載函數詳解

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

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

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

    [7.3.1]--6.3成員運算符重載函數

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

    [2.2.1]--運算符重載的規則

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

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

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

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

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

    [8.5.1]--運算符重載_clip001

    python
    jf_75936199
    發布于 :2023年03月13日 14:19:38

    [8.5.1]--運算符重載_clip002

    python
    jf_75936199
    發布于 :2023年03月13日 14:20:19

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

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

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

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

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

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

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

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

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

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

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

    本章節主要講解是運算符重載運算符重載是賦予運算符能操作自定義類型的功能。C++運算符
    的頭像 發表于 09-30 16:59 ?3481次閱讀
    干貨:三大實例講解三種C++<b class='flag-5'>運算符</b><b class='flag-5'>重載</b>
    主站蜘蛛池模板: 清朝荒淫牲艳史在线播放| 亚洲黄站| 日本人视频-jlzz jlzz jlzz| 窝窝午夜看片免费视频| 在线视频亚洲欧美| 草草操| 国产小视频网站| 天天干视频在线| 99青草青草久热精品视频 | 精品欧美激情在线看| 九九精品影院| 日日搞夜夜操| 黄色理伦| 一区二区三区免费| 69性xxxxfreexxxx| 亚洲迅雷| 成人牲交一极毛片| h免费在线观看| 中文字幕欧美成人免费| 婷婷综合丁香| 下农村女人一级毛片| 宅男色视频| 四虎影院一级片| 三级特黄视频| 色婷婷基地| 久久久久青草| 韩国精品videosex性韩国| www.色在线观看| 免费aa| 亚洲欧美在线一区| 天天插天天透| 色在线免费观看| 色多多a| 黄色毛片免费网站| 国内自拍露脸普通话对白在线| 一级片在线免费看| 大桥未久加勒比女热大陆在线| 2019天天爱天天做| 男女免费观看视频| 一区二区三区四区在线视频| 日本三级视频|