Re: [問題] 重複定義的概念

看板C_and_CPP (C/C++)作者 (tedium of chores)時間17年前 (2009/04/14 03:27), 編輯推噓1(1010)
留言11則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《QQ29 (我愛阿蓉)》之銘言: : 請教各位 : 假如我有個test.h寫 : class A{ : ~~~~~~ : void ORZ(); : }; : void A::ORZ() : { : ~~~~~~~~~~~ : } : void XD() : { : ~~~~~~~~~~~~ : } : test.cpp include t.h : main.cpp include t.h : 這種情況 XD()會說重複定義 我大概可以接受 : 但是ORZ為什麼不會說重複定義呢? : 其中的原理是什麼~~~ 觀念不是很清楚 : 謝謝 void A::ORZ() { ~~~~ } 這就叫definition, void A::ORZ(); 這叫做declaration 若硬是要將東西放在.h檔內 只能放這個 否則必定會multiple definition 把interface放在test.h檔 ========= class A { ~~~ void ORZ(); } void ORZ(); //若是執意要放在這的話.. ===== 把implementation分開到test.cpp檔 ======= #include "test.h" void A::ORZ() { ~~ } ======= 實際內容在這實現 -- 喔 謝懇油錫白德到惡靈來 花縮泡的列為孩兒也的退來累蛤蜊名?胡適播的是 ▄▄翠亨不來十大輸入的噴你耳屎飯 偶爾的覽啪味彎曲的我搜給人特例死稱哩? 安得羅技四銳個劣惡的蹦爸死停因爺兒 給夫普褥輸入的奶店傲夫挖屎屎滴碟兒 ((喔 謝的店屎大屎便夠搬挪也為乎 偶而的練我夫的匪類恩德宏我夫的不累夫?)) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.176.181

04/14 03:32, , 1F
但是如果test.h只被include一次 就不會有"multiple" 的問題
04/14 03:32, 1F

04/14 03:32, , 2F
XD ..
04/14 03:32, 2F
※ 編輯: POSIX 來自: 140.117.176.181 (04/14 03:41)

04/14 08:58, , 3F
謝謝@@我只是好奇vc對class好像不會有重複定義的錯誤出現
04/14 08:58, 3F

04/14 08:58, , 4F
感到很奇怪~
04/14 08:58, 4F

04/14 08:58, , 5F
在想是不是class有一些別的觀念而已@@
04/14 08:58, 5F

04/14 09:01, , 6F
想問一下 ~void ORZ(); //若是執意要放在這的話..
04/14 09:01, 6F

04/14 09:02, , 7F
這行是什麼意思呢 為什麼要額外寫一次這個 而不是寫A::ORZ()
04/14 09:02, 7F

04/14 13:44, , 8F
你把A::ORZ() 想成和XD() 一樣都是function 放在.h檔內
04/14 13:44, 8F

04/14 13:44, , 9F
所發生definition 的問題 是一樣的 ...
04/14 13:44, 9F

04/14 13:45, , 10F
所以才說要放在implementation @@ 避免multiple definition
04/14 13:45, 10F

04/14 15:22, , 11F
至於vc, 太強大了 我不懂 m(_._)m
04/14 15:22, 11F
文章代碼(AID): #19uv8KKG (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #19uv8KKG (C_and_CPP)