什麼是C語言中的多型性,C語言在執行時支援兩種型別的多型性

發布 科技 2024-02-08
9個回答
  1. 匿名使用者2024-02-05

    多型性是指同一實體同時具有多種形式。 它是物件導向程式設計 (OOP) 的乙個重要特性。 如果一種語言只支援類而不支援多型性,那只意味著它是基於物件的,而不是物件導向的。

    C++ 中的多型性體現在執行和編譯中。 執行時多型性是動態多型性,它所指的具體物件要到執行時才能確定。 編譯時多型性是靜態多型性,在編譯時,您可以確定物件的使用形式。

    在 C++ 中,有以下幾種實現多型性的方法:虛函式、抽象類、過載、重寫、模板。

    使用最多的是虛擬功能,模板也很好(STL就是基於它),但是模板在Linux下除錯不是很方便。

  2. 匿名使用者2024-02-04

    其實多型性,簡單來說,就是可以有多種形式,就是可以把一些共同的物件抽象成乙個物件,這個物件可以稱為父類,比如狗或者貓,可以抽象成乙個動物類,然後就可以直接用動物類做一些運算, 你想把它當成乙隻貓,然後給它貓的特徵,如果你想把它當狗用,你可以給它狗的特徵,這樣可以大大簡化程式設計。

  3. 匿名使用者2024-02-03

    多型性,用最簡單的術語來說,就是在執行時確定的,這也是判斷多型性是否存在的最簡單、最直接的特徵。 任何在執行時未決定的東西都可以說是多型的。

    多型性是物件導向程式設計的乙個非常重要的特徵,它在程式設計中起著非常重要的作用。

    通過多型性,可以將不同的子類物件視為父類,遮蔽不同子類物件之間的差異,編寫通用**,並進行通用程式設計以適應不斷變化的需求。

  4. 匿名使用者2024-02-02

    您知道指向基類的指標可以由子類的位址分配嗎?

    當您將子類的位址分配給基類指標,然後呼叫其函式時,將根據子類的過載選擇正確的函式。

    這就是我的理解。

  5. 匿名使用者2024-02-01

    也就是說,可以使用 n 個方法來實現相同的目標。

  6. 匿名使用者2024-01-31

    (1)編譯時的多型性。

    編譯時多型性是通過過載實現的。 對於非虛擬成員,系統在編譯時根據傳遞的引數、返回的型別和其他資訊來決定要實現的操作。

    2)執行時的多型性。

    執行時多型性是指直到系統執行時,才根據實際情況決定做什麼。 在 C++ 中,執行時多型性是通過虛擬成員實現的。

  7. 匿名使用者2024-01-30

    編譯時多型性對應於執行時多型性。

    靜態多型對是動態多型性。

    這兩種說法都是正確的。

  8. 匿名使用者2024-01-29

    對父類的引用或指標,用於操作子類的物件。

  9. 匿名使用者2024-01-28

    C++是一種程式語言,當然只有一種。 但是有許多不同的基於C++的程式設計平台。

    這些平台上使用的程式語言是 C++,但有一些細節不同。 我曾使用過VC++,Symbian C++和Borland C++,它們都基於C++,但程式設計風格或方法略有不同。

    你需要為學習C++打好基礎,首先要學習C++語言。 在看書的時候,可以找到一些叫做《C++程式語言》之類的書,只有學了C++語言之後,才能去學習某個平台的程式設計教程。

    一般來說,多型性有兩種型別,靜態多型性和動態多型性。 靜態多型性,也稱為編譯時多型性,主要包括模板和過載。 另一方面,動態多型性是通過類繼承和虛函式實現的,當基類和子類具有相同的名稱和返回引數的方法時,該方法被宣告為虛方法。

    當基類物件、指標和引用指向派生類的物件時,基類物件、指標和引用正在呼叫基類的虛函式,但實際上是在呼叫派生類函式。 這稱為動態多型性。

    靜態多型性的實現。

    靜態多型性是由編譯器實現的,簡單來說,就是編譯器修改了原來的函式名,在C語言中,函式是不能過載的,因為C編譯器在修改函式時,只是在函式名前面加了乙個下劃線“但是,從gcc編譯器編譯後,發現函式名沒有改變。

    C++編譯器不同,它根據函式引數的型別和數量修改函式名稱,這使得函式可以過載,同樣也可以實現模板,針對不同型別的引數生成相應的專用函式,通過新增修改可以區分不同型別的引數的功能。

相關回答
8個回答2024-02-08

string excelname= excelfileurl();返回到 Excel 的路徑。 >>>More

10個回答2024-02-08

首先,C 類有 254 個位址,但總有乙個作為閘道器路由,因此最多可以有 253 個主機。 那麼這些主機就是公共 IP 位址。 這可以通過設定 LAN 並使用乙個 IP 來完成。 >>>More

4個回答2024-02-08

for(i=3;i<=ihuffsize[n-1];i++)uint_8s[0]=0;

uint_8s[1]=uint_8[p]; >>>More

6個回答2024-02-08

首先,如果你錯了,如果值型別是全域性變數或靜態變數,則將其分配在堆上,區域性變數分配在堆疊上。 引用型別是在堆上分配的,因為新的引用型別來自動態分配的記憶體,因此本地和全域性都在堆中,直到垃圾使用者轉到它。 其實記憶體分配基本是一樣的形式,和語言沒什麼關係。