簡體   English   中英

在C ++中定義具有相同簽名的兩個函數

[英]Define two functions with the same signature in C++

為什么我們可以通過以下方式定義具有相同簽名的兩個函數?

extern void print(int *ia, int sz);
void print(int *array, int size);

這些不是定義,它們是(冗余) 聲明 如果通過提供一個函數體將它們都變成定義,那么您肯定會從編譯器中得到一個錯誤。

在C和C ++中,“聲明”僅說明名稱和名稱類型。

C和C ++中的“定義”實際上使事物存在。 為變量分配空間,並設置初始值,生成功能代碼等(好的,這是簡化的版本)。

這兩個是聲明 ,因為它們缺少函數體。 並且由於它們是函數,因此extern是不必要的,因此它們是相等的。 只要沒有沖突,您可以多次聲明同一件事。 並且由於函數允許基於C ++中的參數進行重載,因此,如果您使函數具有相同的參數但返回類型不同,則只會產生沖突。 使用變量或C函數時,不能有名稱沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM