導航:首頁 > 編程語言 > 編程語言重載怎麼讀

編程語言重載怎麼讀

發布時間:2022-04-23 14:28:01

Ⅰ 重載的編程語言中的重載

編程中重載的定義:函數名相同,函數的參數列表不同(包括參數個數和參數類型),至於返回類型可同可不同。
重載是可使函數、運算符等處理不同類型數據或接受不同個數的參數的一種方法,關於重載一詞在詞義上有兩種不同的說法: 重載是一種多態(如C++,java),有四種形式的多態:
1.虛函數多態
2模板多態
3重載
4轉換
所謂的動態和靜態區分是另一種基於綁定時間的多態分類,嚴格來說,重載是編譯時多態,即靜態多態,根據不同類型函數編譯時會產生不同的名字如int_foo和char_foo等等,以此來區別調用。故重載仍符合多態定義——通過單一標識支持不同特定行為的能力,只是重載屬於靜態多態,而不是通過繼承和虛函數實現的動態多態。 重載(overloaded)和多態無關,真正和多態相關的是覆蓋(inheritance)。
當派生類重新定義了基類的虛擬方法後,基類根據賦給它的不同的派生類引用,動態地調用屬於派生類的對應方法,這樣的方法調用在編譯期間是無法確定的。因此,這樣的方法地址是在運行期綁定的(動態綁定)。
重載只是一種語言特性,是一種語法規則,與多態無關,與面向對象也無關。
不過針對所謂的第二種重載,有一個專門的名詞--重寫或重定義。重載與重寫的區別就在於是否覆蓋,重寫一般多發生在不同的類且存在繼承關系之間,而重載多是在一個類里或者一塊代碼段里。
特點:
由於重載可以在同一個類中定義功能類似的函數,這給程序員管理類的相似函數提供了極大的方便。例如,在一個定義圓的類中,需要設定圓心和半徑來確定一個圓對象,程序員不需要設定setRadius(float r)和SetPoint(float x,float y)兩個不同名函數,而只需要設定一個CSetCicle函數名就夠了。在這個簡單的例子中重載並沒有明顯的優勢,可是當一個類中相似功能函數有幾十、上百個的時候,重載的優勢就顯現出來了,這時程序員不需要去記這么繁多的函數名,可以把更多的精力放在程序本身上。重載的方法只屬於子類。
函數:
1.函數名必須相同,返回值可以相同,也可以不同,但是特徵標必須不同。是函數名來確定函數的不同,是特徵標是函數可以重載。編譯器首先選在函數名,然後再根據特徵標在眾多重載的函數中找到合適的。
2.匹配函數時,編譯器將不區分類型引用和類型本身,也不區分const和非const變數。(小註:因為這些在定義和聲明時可能不同,但是在調用時都是一樣的,編譯器將無法區分)。但是值得注意的是,形參與const形參的等價性僅適於非引用形參。有const引用形參的函數與有非const引用形參的函數是不同的。類似的,如果函數帶有指向const類型的指針形參,則與帶有指向相同類型的非const對象的指針形參的函數不相同。
3.名稱修飾(name decoration)。編譯器將根據原型中指定的形參對每個函數名進行加密
重定義:
被重載的函數有不同版本,這些函數地位是一樣的,可以根據特徵標的不同選擇不同的函數。被重定義的函數也有不同的版本,但是你不能隨意選擇,你只能選擇最新的版本,被重定義多發生在類之間的繼承里。
4.函數會有那麼多版本,那麼編譯將選哪一個呢。當然,理想情況是,實參與形參的數據類型完全匹配,但是當不完全匹配時會怎樣呢?這就要牽扯到c++里復雜的類型轉換了。
在重載及函數模板重載里,編譯器選擇函數,要經過以下三步,這個過程稱為重載解析。
第一步:創建候選函數列表,其中包含有與被調函數名稱相同的函數與模板函數。
第二步:使用候選函數列表創建可行函數列表。這些都是參數數目正確的函數。
第三步:確定是否有最佳可行的函數。如果有,則使用。
確定最佳函數,只考慮其特徵標,而不考慮返回類型(也無從考慮,但是要是硬想辦法的話,也有,不過沒有必要為了不必要的性能而浪費資源)。確定最佳函數,匹配特徵標要依次經過以下判斷:(1)完全匹配(常規函數優於模板;允許無關緊要的轉換)(2)提升匹配(如char和short自動轉換為int)(3)標准轉換(int轉換為char,long轉換為double)(4)用戶自定義的轉換(如類聲明中定義的轉換函數)。
完全允許無關緊要的轉換,這些轉換包括引用,指針與實體之間,數組與指針之間,函數與函數指針之間,const與非const等等。
其次還要注意匹配的優先順序。1,指向非const數據的指針和引用優先於const的指針和引用參數匹配(這種優先順序只有當指針或引用出現時產生)。2,非模板函數,優於模板函數,顯示具體化的模板將優於隱式具體化的模板,總之較具體的優先(注意,具體並不是由於顯隱決定的,術語「最具體」是指編譯器推斷使用哪種類型時執行的轉換最少)。 通常,派生類繼承基類的方法,因此,在調用對象繼承方法的時候,調用和執行的是基類的實現.但是,有時需要對派生類中的繼承方法有不同的實現.
例如,假設動物類存在跑的方法,從中派生出馬和狗,馬和狗的跑得形態是各不相同的,因此同樣方法需要兩種不同的實現,這就需要重新編寫基類中的方法.
重寫基類方法就是修改它的實現或者說在派生類中重新編寫 //java代碼//方法重寫publicclassFather{publicvoidovel(inti){/*dosomething...*/}publicStringovef(){/*dosomething...*/return***;}}publicclassSonextendsFather{publicvoidovel(inti){/*doothersomething...*/}publicStringovef(){/*doothersomething...*/returnXXX;}}

Ⅱ 編程序常用英語單詞是什麼

編程序常用英語單詞部分:

1、Compile:編繹

2、Run:運行

3、Class:類

4、Object:對象

5、System:系統

6、out:輸出

7、print:列印

8、line:行

9、variable:變數

10、type:類型

11、static:靜態的

12、array:數組

13、parameter:參數

14、method:方法

15、function:函數

16、public:公有的

17、default:默認

18、get:得到

19、private:私有的

20、import:導入

21、set:設置

22、package:包

23、access:訪問

24、protected:受保護的

25、void:無(返回類型)

26、operation:操作運算

27、member-variable:成員變數

28、member-function:成員函數

29、extends:繼承 base class:基類 parent class:父類

30、interface:介面 child class:子類 super class:超類

31、overload:重載 abstract:抽象 exception:異常

32、implements:實現 Runtime:運行時

33、derived class:派生類

34、override:重寫覆蓋

35、final:最終的不能改變的

(2)編程語言重載怎麼讀擴展閱讀

一、編程:設計具備邏輯流動作用的一種「可控體系」【註:編程不一定是針對計算機程序而言的,針對具備邏輯計算力的體系,都可以算編程。】

二、編程是編寫程序的中文簡稱,就是讓計算機代為解決某個問題,對某個計算體系規定一定的運算方式,使計算體系按照該計算方式運行,並最終得到相應結果的過程。

三、為了使計算機能夠理解人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。這種人和計算體系之間交流的過程就是編程。

Ⅲ 運算符重載是什麼

Java中已經不需要自己去實現運算符重載了。在C++等語言中,運算符重載主要是便於對象運算上的方面,使得對對象的「運算符操作」就如同對基本類型操作那樣簡單,這也體現了操作上的一致性。至於重載時需要注意到的事項,各種C++編程語言書中基本都會有所涉及,希望你親自去參考下。

Ⅳ 從編程的角度來說,重載是怎麼讀的

chongzai 重載,而不是zhongzai

Ⅳ 編程常用英語

編程語言是英文字母,但是並不需要你英語太好,但是個別公司喜歡英文注釋而已,並不影響實際工作,因為還有網路,可以翻譯好之後放進去。只要讀過書,肯定接觸過英語,大學大專畢業生編程是完全不用考慮英語難不難的,但是英語好是很好的競爭優勢。

Ⅵ C# 運算符重載是怎麼一回事,一般哪裡用,起什麼作用

我覺得樓上兩位說的很好,很明確了,我換一種方式解釋一下。
要回答樓主的問題,那麼就要先明確2個概念,運算符,重載
1 運算符
運算符指的就是+、-、*、/ 等此類用於算術運算的符號,這些符號在寫在程序代碼裡面,我們的編譯器可以識別出來,是因為我們已經為編譯器定義好了規矩(語法),所以你會發現有些有些東西可以用+連接,而有些卻不行,那是因為系統沒有自定這樣的規矩。
2 重載
重載一個語言特性,意思就是說,編程語言允許存在多個個名字一樣,但是參數不一樣的方法(函數)。隨手寫寫兩個方法看看:
int Add(int a,int b);
double Add(double a,double b);
我們定義了兩個Add方法,但是他們的參數不一樣,這是合法,這個時候我們就可以說Add方法有2個「重載」。

現在,假如你把Add方法看作是「+」號,那麼這個運算符重載的意思不就出來了嗎,「+」號可以加兩個整形(int)數,也可以加兩個雙精度(double)數,就是因為有運算符重載這種特性!

通過運算符重載,你能讓「+」讓所有的東東都能相加在一起!

Ⅶ 重載和重寫有什麼區別

重載和重寫的區別有以下幾點:

一、定義上的區別:

1、重載是指不同的函數使用相同的函數名,但是函數的參數個數或類型不同。調用的時候根據函數的參數來區別不同的函數。

2、覆蓋(也叫重寫)是指在派生類中重新對基類中的虛函數(注意是虛函數)重新實現。即函數名和參數都一樣,只是函數的實現體不一樣。

二、規則上的不同:

1、重載的規則:

①必須具有不同的參數列表。

②可以有不同的訪問修飾符。

③可以拋出不同的異常。

2、重寫方法的規則:

①參數列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是重載。

②返回的類型必須一直與被重寫的方法的返回類型相同,否則不能稱其為重寫而是重載。

③訪問修飾符的限制一定要大於被重寫方法的訪問修飾符。

④重寫方法一定不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常。

三、類的關繫上的區別:

重寫是子類和父類之間的關系,是垂直關系;重載是同一個類中方法之間的關系,是水平關系。

Ⅷ 為什麼 Objective-C 很難

為什麼某些程序員對轉投iOS或者OS X開發會心存畏懼?

語法

先說說編程語言是什麼。所謂編程語言就是一種人可以讀得懂的程序代碼。一門編程語言通常包含一系列內容:語法(語句書寫和聲明的規則)和語義(以達成某些任務為目標,把語句和聲明有效的結合起來)。

大部分(通常情況下)編程語言在方法調用上都是類似C語言的風格,訪問類成員採用.語法。(也就是C中的structs)。雖然這些語言一般都有各自己定義類的方式(Java和C#或C++還是不大相同的),但是追究到語言的諸多細節還都是很相似的。每當人們開始接觸一門新的編程語言的時候,如果它的語法看起來很似曾相識,會讓學習者覺得很舒服。像大多數人都是有C語法背景的,所以要學習一門類C語法的語言的話,第一觀感會很親切。

單從語法角度來看,Objective-C可謂**別具一格**。它的語法太特別了,礙於它語法的另類,很多人沒有耐心去深究它的語義,而它的語義恰恰與C++,Java等語言沒什麼區別。

像Python和Ruby這些所謂」古怪」的語言都更容易上手,僅僅是因為它們可以通過.語法來進行方法調用和訪問類成員。而且人們通常能夠迅速習慣用縮進來代替花括弧。

當我向別人介紹Objective-C的時候,一般情況下,我會拿它和某個OOP(面向對象編程)語言來對比說明。

why objective-c is hard to learn 1

目前來看還OK。也許他們之前知道lisp吧,所以不難理解這句語法。

why objective-c is hard to learn 2

到這句,人們普遍覺得比較難接受,情況也變得不那麼樂觀了。

why objective-c is hard to learn 3

這句可以直接讓人們崩潰了。

那些冒號是啥?太嚇人了!隨後冒出一堆問題:方法是怎麼調用的?是通過performAction還是什麼別的方式?方法怎麼重載?

要知道,我們沒有在討論方法,我們說的是消息(messages)(我也不會去討論他們之間的區別)和selectors,好比上文所呈現的performAction:withTwoParameters。但是,大家已經懶得去了解了。

Objective-C是C的超集,它其實是一門很cool的編程語言,但是由於其自身的某些特點,相較於其他現代編程語言,人們會覺得Objective-C很古老。作為C的超集,Objectivec-C在C的基礎上擴展了一系列非常規的特性,這恰恰增加了Objective-C的復雜度。

Objective-C是一門大型語言。下此定義的出發點是:它的語法十分繁復。實際上,蘋果已經在加大對Objective-C瘦身的力度,比如說,雖然速度緩慢但是終究還是完成了頭文件去標准C風格的過渡。而且,蘋果還為Objective-C做了不少改進,增加了許多新特性,使得Objective-C的代碼更加簡練,比如:

Synthesizing properties
通過.語法訪問getters/setters
垃圾回收(Garbage Collection)
Blocks(閉包closures)
ARC(Automatic Reference Counting)
弱引用(Weak references)
所以,雖然語言變得越來越龐大,但是開發編寫代碼的復雜度反而降低了。

Runtime

Objective-C是動態運行的,可能單單從其與C的淵源這個角度來看這個特性並不那麼直觀。由於不需要直接編寫匯編碼,C語言自身是一門變化較低的語言,鑒於Objective-C是C的超集,我們很容易將Objective-C的穩定性趨向於C,但現實際上,Objective-C是動態運行的且靈活性相當高的語言。Objective-C支持函數柯里化(function currying),支持反射機制,可以在運行時動態地為類添加或移除方法。

除非你之前有接觸過類似Objectivec-C這些特性的編程語言,比如說Ruby或Lisp,否則一時間很難適應Objective-C。但是無需擔憂!有些東西,外表看起來神秘可怕其實本質沒那麼復雜。

Framework

使用Objective-C構建apps完全離不開Cocoa/Cocoa Touch框架。就好像用Ruby開發web應用離不開Rails一樣。

經過經年累月的發展,Cocoa已經變得非常的厚重。不過如前文所說,蘋果最近正在逐漸的為常規iOS開發所依賴的Cocoa Touch框架進行減肥,以降低它的復雜度。即便如此,哪怕要開發的app極其簡單,也還是有許多東西要學,像蘋果的官方文檔還有已暴露的各種頭文件都是很好的學習資源。就拿UIView中的contentStretch屬性為例,頭文件的定義和說明如下:

@property(nonatomic) CGRect contentStretch __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);

// animatable. default is unit rectangle {{0,0} {1,1}}

這到底是什麼意思呢?按照我的理解,這個屬性是用來描述可伸縮區域的大小。但是怎麼實現的呢?這個區域是指一個矩形嗎?也許你永遠都不會和這個屬性打交道,但是假如在開發過程中的某個時點和場景下使用這個屬性能夠輕松解決你的問題,那個時候你會知道它的存在並能正確的使用它嗎?

Cocoa/Cocoa-Touch是龐大的框架。要真正的駕馭它就只能靠熟能生巧了。但這個熟悉它的過程常常使很多新的學習者退縮。

History

一直以來,蘋果都在不停的推動著圍繞Objective-C語言開發體系的進步,像Objective-C runtime,Cocoa/Cocoa Touch框架以及針對Objective-C的編譯器等一系列更高層面設計的交叉重疊使得Objective-C不僅僅是一個語言這么簡單。

why objective-c is hard to learn 4

所以當學習Objective-C的時候,不能孤立的去學習這門語言、某些框架、它的運行機制或編譯器,而是要把他們融會貫通。比如說現在Objective-C集成的ARC(Automatic Reference Counting)機制就涉及到了語義(不需要顯示調用dealloc了)層面、編譯器層面(顯而易見)、以及對Cocoa/Cocoa Touch框架的命名約定等內容。

上文所提到的圍繞Objective-C的一些列緊密關聯的設計算是其獨有的特點。其他的語言或多或少都會依賴於別的的語言或平台來運行,比如基於.net運行的Iron Python,不是Java但是卻依賴JVM的Clojure,甚至Ruby和Rails其實都有各自相對獨立的實體和工程。唯一一個比較知名的受Cocoa/Cocoa Touch和Objective-C runtime支撐運行的Mac Ruby,後來也被蘋果停掉後了後續支持。

Objective-C和相關的框架、runtime以及編譯器等等這個體系對其他開發者社區而言是又幾乎是封閉的。

未來

從目前掌握的信息來看,過去的四年來蘋果一直在嘗試降低Objective-C語言的復雜度。淘汰手動內存管理以及C標准頭文件,引入更符合當下編程語言潮流的ARC機制,還有通過.語法來訪問屬性的getter/setter方法等等都是為了降低Objective-C的學習成本。但是即便如此,Objective-C仍然是具備一定學習門檻的開發語言,它的熱度完全那些基於Objective-C編寫的熱門iOS應用帶起來的。

Ⅸ 編程語言 「JAVA」 這個詞怎麼讀發音

拼音:zha-va
音標:['d3ɑ:və]
名詞 n.

1.爪哇
2.爪哇產的咖啡
3.【電腦】在網際網路上的應用程序開發語言
(d後邊那個音寫出來後是個方框,只能用3代替)

Ⅹ 重載和重寫的區別

重載實現的是編譯時的多態性,重寫實現的是運行時的多態性。重載發生在一個類中,同名的方法如果有不同的參數列表則視為重載;重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的參數列表,有兼容的返回類型。

重寫(又叫覆蓋或復寫)方法名相同,返回值類型相同,參數列表相同。這里注意沒有規定修飾符奧。重載對許可權沒有要求;重寫的許可權是:被子類重寫的方法不能擁有比父類更加嚴格的許可權。重載發生在一個類里,而重寫發生在繼承類里。構造方法可以被重載,但不可以被重寫。



相關信息

Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。

Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。

閱讀全文

與編程語言重載怎麼讀相關的資料

熱點內容
linux分區讀取 瀏覽:794
單片機液晶顯示屏出現雪花 瀏覽:890
解壓器用哪個好一點 瀏覽:771
什麼app看小說全免費 瀏覽:503
sha和ras加密 瀏覽:823
韓順平php視頻筆記 瀏覽:636
阿里雲ecs伺服器如何設置自動重啟 瀏覽:596
三星電視怎麼卸掉app 瀏覽:317
如何將pdf轉換成docx文件 瀏覽:32
dos命令批量改名 瀏覽:376
centosphp環境包 瀏覽:601
mfipdf 瀏覽:534
電腦解壓後電腦藍屏 瀏覽:295
外網訪問內網伺服器如何在路由器設置 瀏覽:856
2014統計年鑒pdf 瀏覽:434
linuxoracle用戶密碼 瀏覽:757
股票交易pdf 瀏覽:898
p2papp源碼 瀏覽:308
記錄睡眠軟體app哪個好用 瀏覽:140
液壓助力車壓縮比 瀏覽:217