[問題] class header(.h)中為定義還是宣告?
在C語言中,
我知道header(.h)通常放置的是參數的宣告,到.c中才開始真正定義,
這是為了避免當某個.h有多個.c去include的時候,產生重複定義的錯誤。
基於上述理由,我一直以為C++中class的.h檔和C中.h檔目的是一樣的,
但是最近看到C++ Primer(ch12)中,不像是這個樣子,
就書中敘述的內容,
看起來平常使用的class header(有成員那種),就已經為class做了定義。
這樣讓我不太明白,如果在class中有個成員參數 a,
1. 直接在header中寫上 int a = 0;
2. 在header中寫 int a;,然後再到constructor中寫 a = 0;
想請教一下這兩者有什麼不同?
因為平常看到的情形都是 2.,這只是純粹C語言沿用下來的習慣嗎?
還是有什麼重要部分我疏忽掉沒有考慮進去的呢?
還麻煩大家替我解惑了,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1490337275.A.3A5.html
→
03/24 14:35, , 1F
03/24 14:35, 1F
→
03/24 14:36, , 2F
03/24 14:36, 2F
→
03/24 14:37, , 3F
03/24 14:37, 3F
抱歉,我好像敘述得不夠仔細,
S大說的應該是main中要用到class的時候了吧?
其實我是想問說,
1.
class myClass {
public:
myClass () {};
~myClass () {};
private:
int a = 0;
};
2.
class myClass {
public:
myClass() {a = 0};
~myClass() {};
private:
int a;
};
1.和2.這兩者的差別這樣
※ 編輯: prosperous (140.112.25.105), 03/24/2017 14:46:50
推
03/24 15:02, , 4F
03/24 15:02, 4F
是我誤會了,
剛剛去翻 C++11 Language Extensions,懂S大跟l大的意思了!
感謝^_^
※ 編輯: prosperous (140.112.25.105), 03/24/2017 15:25:25
推
03/24 15:53, , 5F
03/24 15:53, 5F
→
03/24 15:54, , 6F
03/24 15:54, 6F
→
03/24 15:54, , 7F
03/24 15:54, 7F
推
03/24 19:18, , 8F
03/24 19:18, 8F
推
03/26 19:08, , 9F
03/26 19:08, 9F
→
03/26 19:08, , 10F
03/26 19:08, 10F