C 為什麼不能在main函式裡面顯式例項化類

時間 2021-08-30 10:37:16

1樓:北京博飛港澳台聯考

也不是只能放在.h裡面,但是推薦放在.h裡面。stl模板實現全部是放在.h裡面的。

------------------

編譯能通過。

1)參與編譯的只是.cpp檔案,不會報錯的原因,是因為它能在.h裡面找到模板的宣告。

鏈結錯誤。

1)鏈結的時候,需要例項化模板,這時候就需要找模板的具體實現了。假設在main函式中呼叫了乙個模板函式,這時候就需要去例項化該型別的模板。注意main函式裡面只包含了.

h檔案,也就是只有模板的宣告,沒有具體實現。就會報錯。

2)而模板的實現.cpp裡面,雖然有模板的具體實現,但是沒有誰在該.cpp裡面使用乙個模板函式,就不會生成乙個具體化的例項。

ps:模板是在需要的時候,才會去生成乙個具體化的例項的,比如,你只要乙個int型的例項,模板就只會給你生成乙個int型的例項,模板本身是不會被執行的(也就是模板本身不產生彙編指令),是模板生成的具體化例項才產生指令(這個例項是隱藏的,我們是看不到的)

解決方案:

1)將模板實現寫在.h裡面

2)如果你非要寫在.cpp裡面,那麼請在模板實現的.cpp檔案裡面(或者.

h裡面)顯式的例項化乙個模板。如果是這樣的話,那模板就沒有太大的意義了,難道你去自己手動例項化所有的例項?

提問者評價謝謝!

2樓:匿名使用者

顯式呼叫預設建構函式?

c++中main()函式中不能定義別的函式嗎?

3樓:匿名使用者

函式中不能定義函式,對於任何函式都不行,這時規定

4樓:匿名使用者

函式的宣告不支援巢狀

我想你的意思是不是某函式放在main後面會出現編譯錯誤吧

在main前面對所有函式進行宣告,然後函式體的定義可以放在後面

5樓:月淵冥

可以定義,但是基本都不會在主函式中定義。因為語法結構和c差不多,比較繁瑣,引用起來也費事,肯定沒在類中定義方便。因為要編大型程式的話基本就只會用類,如果在主函式中呼叫再在類中呼叫實參的話很費事!

所以在c++中,尤其是有類的時候,基本不會在主函式中定義的。因為比較麻煩!但絕不是不能這麼做。

6樓:

只能在函式外定義函式啊!函式內部只能呼叫不能定義!

c++中類模板怎樣例項化物件是類型別 給個簡單的例子說明一下!!

7樓:匿名使用者

template

class mydata

;void main()

c++ main函式呼叫其他檔案中定義的類的方法, 加了該類的標頭檔案,為什麼編譯時還是提示未定義?

8樓:匿名使用者

哪個未定義啊。要貼出來啊, 方便大家幫你。

大家給你方便,你這是不給大家方便啊

而且**寫成這樣。。。哎。!

9樓:匿名使用者

鏈結錯誤,不是編譯錯誤,用什麼編譯的,把test這兩個檔案加到工程了嗎

10樓:匿名使用者

**風格完全有問題,這樣根本不好排錯,也不好給別人看。要知道,**寫出來是給人看的,如果人都看得頭大,那麼基本上**就沒有什麼意義了。按照標準的c++風格寫一遍後,看看是什麼錯誤。

c++ ,含有模板的類如何在main 函式中宣告定義其物件呢?

11樓:匿名使用者

比如int型別:

dlinklisttar_obj; 就可以了

c++函式模板的顯示例項化和顯式具體化是什麼。?解釋下 這個例子

12樓:匿名使用者

template

void fun(a a){}

template<>

void fun(int a)//顯式具體化void main()

c語言中不能在函式裡面宣告函式嗎

迷路的國王 你這個問題看似簡單,其實涉及到了函式的宣告與定義,以及c語言的標準規範和具體編譯器的實現問題。從標準規範來看 c語言允許函式裡宣告函式,但是不建議這麼寫,因為不利於多文件的組織。c語言禁止函式裡定義函式,但是個別編譯器卻沒遵循標準。c語言的標準和編譯器的實現並不是完全統一,為了可移植性,...

為什麼我學的c語言在定義main函式時,前面沒有

一頁凌風 樓上說法有些錯誤。首先,mian函式作為主函式是程式的入口沒錯,但是它其實一定要被其他函式呼叫的,這些函式就是進入程式之前的引導。所以,有的時候,我們會發int返回值的main函式內不甚至用了引數,這些引數也是可以預設的,但實際上都被預設值了,引導程式在呼叫main函式的時候必須獲取這些值...

main函式為什麼能呼叫構造方法

靜態方法中只能呼叫靜態方法和靜態變數的說法是在沒有例項化類的情況下,該靜態方法只能呼叫該類下的靜態方法或變數。在方法中例項化乙個類,就可以呼叫例項化這個類中的非靜態方法。非靜態方法是在例項化物件的時候生成的,而靜態方法在編譯後就存在的。例如。class a public static void ma...