作者POSIX (tedium of chores)
看板C_and_CPP
標題Re: [問題] 重複定義的概念
時間Tue Apr 14 03:27:14 2009
※ 引述《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