C 為什麼不要把函式定義都放標頭檔案裡

時間 2021-09-05 11:55:52

1樓:happy黃東陽

要害主要還是在標頭檔案定義類會暴露具體的實現方法,而在matlab這種軟體的一些自帶矩陣運算函式都是經過他們公司的研究實現的最高效的演算法,涉及到智慧財產權,源**自然不會給你看,這時候只提供給你編譯好的庫檔案和標頭檔案就能避免洩露,至於重新編譯標頭檔案沒什麼影響,因為標頭檔案還有庫這些檔案一般都是由**商編譯好提供給你的,套用就行。

2樓:匿名使用者

標頭檔案提供類的結構,而類的實現不放在標頭檔案是為了不將類的實現暴露出來在最後提供給使用者的api,可是標頭檔案和庫的形式,這樣,你的實現過程不再暴露,而介面也提供了

3樓:

定義放在標頭檔案裡,就不能被多個原始檔使用了。

因為原始檔用#include指令引用標頭檔案,其實是一個簡單的複製貼上,也就是把標頭檔案內容複製到原始檔中#include那一行。如果把定義放在標頭檔案裡,且多處引用的話,同一個函式就會被多個原始檔重複編譯,就會有編譯錯誤了。

這樣,你就不能寫一些通用的用於重複使用的函式了。

4樓:匿名使用者

或許“飽受詬病”這個說法不夠準確,參考下面這幅漫畫

5樓:匿名使用者

內聯。。。一般只是用在短而常用的函式

6樓:匿名使用者

c++的編譯時間已經飽受詬病了……

7樓:匿名使用者

牽一髮而動全身—— 人智卓,傻多果

8樓:匿名使用者

只要沒錯誤,你,愛放哪就放哪

c++裡,為什麼在標頭檔案h裡不能定義函式,在標頭檔案的類裡面卻可以?

9樓:

在main那裡要#include "linklist.h"而不是cpp。然後你使用的是類别範本,所以需要指定模板的型別: linklist a(r, 5); 這樣建立物件

c++函式的定義可以放在標頭檔案中的嗎(不是行內函數)?我聽老師說過不可以的呀

10樓:匿名使用者

不可以。需要在 c檔案宣告 h檔案 用extern宣告 別的c檔案包含該h檔案就可以用宣告的函式了

c++中標頭檔案宣告多個類,這些類的成員函式的實現為什麼不能放在同一個原始檔裡?不要隨便ctrl+c過來

11樓:天路旅行

可以在一個標頭檔案宣告,這是一定可以的、。。。。

12樓:

一個類的宣告與實現不需要單獨放在一個原始檔裡,你之所以出錯,很有可能是檔案建立錯了,按你的想法,第一步:建立標頭檔案,檔案型別為.h,在標頭檔案裡宣告這三個類,第二步,建立一個cpp檔案,將類的定義寫進這個cpp檔案中,第三步,再建立一個cpp檔案,寫上main()函式,此時你的注意,你的預處理標頭檔案,因包含“第二個檔案.

cpp”.在執行就行了。

13樓:匿名使用者

大神,我一個.h檔案裡面,放了好多類

然後,在一個.cpp檔案裡面,放了好多類的實現。

請問為什麼會報錯啊?

c++標頭檔案裡只有函式宣告沒有函式定義為什麼能執行?怎樣做自己的標頭檔案?

14樓:匿名使用者

庫檔案的實現都在c++執行庫裡,可能是靜態連結或者動態庫

為什麼在c++中函式要先宣告然後再定義呢?

15樓:

1、函式的作用域只是從定義的地方開始的。也就是說,在函式定義行之上,是無法使用該函式的。而把函式的定義都放在主函式之前的話,程式會變得不清楚。

所以在使用前只需用一行宣告一下就可以了。

2、也許函式並不都是在一個檔案裡使用,這時候,如果再定義一遍,不僅顯得羅嗦,而且使程式的維護變得麻煩,如果修改這個函式的話,需要修改每個定義。

所以可以把函式宣告放在一個標頭檔案中,使用的時候,包含這個標頭檔案就可以了。

3、有時候,自己寫的函式需要給別人用,比如商業用途。這樣的話,不能將整個函式的實現都給對方,這就需要生成一個庫檔案,而將函式宣告放在標頭檔案中來給對方使用。

4、有時候需要用函式宣告來重新宣告函式,即使前面已經宣告過。這樣做可以設定新的預設引數,也可以是為了遮蔽作用域外同名的函式宣告。

16樓:

你也可以不宣告,直接定義。但:

1、函式的作用域只是從定義的地方開始的。也就是說,在函式定義行之上,你是無法使用該函式的。而把函式的定義都放在主函式之前的話,程式會變得不清楚。

所以在使用前只需用一行宣告一下就可以了,明瞭。

2、也許函式並不都是在一個檔案裡使用,這時候,如果再定義一遍,不僅顯得羅嗦,而且使程式的維護變得麻煩,如果修改這個函式的話,需要修改每個定義。

所以可以把函式宣告放在一個標頭檔案中,使用的時候,包含這個標頭檔案就可以了。

3、有時候,自己寫的函式需要給別人用,比如商業用途。這樣的話,不能將整個函式的實現都給對方,這就需要生成一個庫檔案,而將函式宣告放在標頭檔案中來給對方使用。

4、有時候需要用函式宣告來重新宣告函式,即使前面已經宣告過。這樣做可以設定新的預設引數,也可以是為了遮蔽作用域外同名的函式宣告。

17樓:匿名使用者

這是最好的習慣,為什麼?因為這樣就是讓編譯器知道你下面有什麼函式“出場”,如果你不先宣告,一般不會產生錯誤,但有可能在一個函式呼叫另一個時,由於先後出現順序不同引起出錯,其實“編寫上”並沒錯。

還有就是在大型聯合程式設計時,一般都將子函式群放在main程式後面方便閱讀。這樣前邊要加上這些函式的宣告。

宣告不宣告執行速度上沒變化

c語言怎樣才能在標頭檔案中實現函式定義

標頭檔案和原始檔沒什麼兩樣,可以直接定義,但是在標頭檔案中使用定義是違背初衷的做法,是應該杜絕的 唐博 正常的函式是不可以在標頭檔案中定義的,除非你將函式定義成行內函數。在定義函式的時候,前面加上inline 就可以了。如 inline int a 但是行內函數是c 裡面的,可能c的編譯器會不支援。...

c 為什麼需要把重新定義的函式定義為虛擬函式

聚發稿網 1不是不能定義,是定義了沒意義。因為建構函式不被繼承,而虛擬函式是要在派生類中重定義的2定義虛解構函式後,由於多型,當使用基類指標指向派生類物件時,會呼叫派生類的虛構函式,然後派生類的解構函式自動呼叫基本解構函式。不是虛的話,直接呼叫基類的解構函式了。如果派生類中有用new分配的記憶體,就...

c標頭檔案中宣告的函式都是在哪兒定義的

1 函式宣告由函式返回型別 函式名和形參列表組成。形參列表必須包括形參型別,但是不必對形參命名。這三個元素被稱為函式原型,函式原型描述了函式的介面。定義函式的程式設計師提供函式原型,使用函式的程式設計師就只需要對函式原型編輯即可。2 比如 返回型別 函式名 引數1型別 引數1,引數2型別 引數2,例...