※ 引述《mhhsu (Set Limitation )》之銘言:
: Q130:"struct" 和 "class" 關鍵字差別在哪?
: struct 的成員和基底類別, 都是預設為 public 的,而 class 則預設為 private。
: 注意:你應該“明顯地”把基底類別設為 public、private 或是 protected,而不
不只這樣,起碼有下列三點不同。
1. Class 的成員預設為 private,而 struct 的成員預設為 public。
2. Class 的父類別 (base class) 預設為 private,而 struct 的父類別
預設為 public。
3. Struct 可以用初始陣列 (initializing arrays) 初始之,class 不行,如:
struct Foo {...};
Foo foo = {0, "hello world", '!'};
--
_________________________________________________________
Uni\/\/indows |
WW\/\/etworks | 雲漫漫,風騷騷!
________________/ 人間路啊,迢迢!
--
※ Origin: 程式設計樂園 ◆ From: pdp1.csie.nctu.edu.tw
> -------------------------------------------------------------------------- <
發信人: william.bbs@cszone.cc.ntu.edu.tw (何陋居主), 看板: C_and_CPP
標 題: Re: [C++]請問 structure vs. class 到底哪些地方不 …
發信站: 程式設計樂園(CSZone) (Fri Feb 19 05:14:03 1999)
轉信站: Ptt!CSZoneNews!CSZone
※ 引述《dreamon (Cyber Roamer)》之銘言:
: ※ 引述《mhhsu (Set Limitation )》之銘言:
: : Q130:"struct" 和 "class" 關鍵字差別在哪?
: : struct 的成員和基底類別, 都是預設為 public 的,而 class 則預設為 private。
: : 注意:你應該“明顯地”把基底類別設為 public、private 或是 protected,而不
: 不只這樣,起碼有下列三點不同。
: 1. Class 的成員預設為 private,而 struct 的成員預設為 public。
: 2. Class 的父類別 (base class) 預設為 private,而 struct 的父類別
: 預設為 public。
這兩點都有被 FAQ 的第一句話所涵蓋。
: 3. Struct 可以用初始陣列 (initializing arrays) 初始之,class 不行,如:
: struct Foo {...};
: Foo foo = {0, "hello world", '!'};
底下的程式片段, 順利通過 egcs 1.1.1、BCB 3.0、VC++ 6.0 的編譯:
struct Foo { int i; const char* p; char c; };
Foo foo = {0, "hello world", '!'};
class Bar { public: int i; const char* p; char c; };
Bar bar = {0, "hello world", '!'};
--
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
≡ 何陋居 ≡ 練從難處練,用從易處用。
武 諺
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--
※ Origin: 程式設計樂園 ◆ From: cissun13.cis.nctu.edu.tw
> -------------------------------------------------------------------------- <
發信人: dreamon.bbs@cszone.cc.ntu.edu.tw (Cyber Roamer), 看板: C_and_CPP
標 題: Re: [C++]請問 structure vs. class 到底哪些地方不 …
發信站: 程式設計樂園(CSZone) (Fri Feb 19 23:20:10 1999)
轉信站: Ptt!CSZoneNews!CSZone
※ 引述《william (何陋居主)》之銘言:
: : 2. Class 的父類別 (base class) 預設為 private,而 struct 的父類別
: : 預設為 public。
: 這兩點都有被 FAQ 的第一句話所涵蓋。
嗯!不過我覺得分開講會清楚些。
: : 3. Struct 可以用初始陣列 (initializing arrays) 初始之,class 不行,如:
: 底下的程式片段, 順利通過 egcs 1.1.1、BCB 3.0、VC++ 6.0 的編譯:
剛剛查了一下 C++ Standard,發現 class 也可以用 initializing array
(or explicit inialization) 初始,先前 post 的文章第三點有點錯誤。
(我已經忘了從哪看來的了)。
補充一下,若要 class 或 struct 能做 expilcit inialization,該 class
不能有 constructor,不能有 private or protected data member,不能有
base calss,以及不能有 virtual function (C++ standard $8.5.1)。
照這樣的限制來看,這一點也被 FAQ 的第一句話所涵蓋了。