看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
POSIX:但是如果test.h只被include一次 就不會有"multiple" 的問題 04/14 03:32
POSIX:XD .. 04/14 03:32
※ 編輯: POSIX 來自: 140.117.176.181 (04/14 03:41)
QQ29:謝謝@@我只是好奇vc對class好像不會有重複定義的錯誤出現 04/14 08:58
QQ29:感到很奇怪~ 04/14 08:58
QQ29:在想是不是class有一些別的觀念而已@@ 04/14 08:58
QQ29:想問一下 ~void ORZ(); //若是執意要放在這的話.. 04/14 09:01
QQ29:這行是什麼意思呢 為什麼要額外寫一次這個 而不是寫A::ORZ() 04/14 09:02
POSIX:你把A::ORZ() 想成和XD() 一樣都是function 放在.h檔內 04/14 13:44
POSIX:所發生definition 的問題 是一樣的 ... 04/14 13:44
POSIX:所以才說要放在implementation @@ 避免multiple definition 04/14 13:45
POSIX:至於vc, 太強大了 我不懂 m(_._)m 04/14 15:22