精華區beta C_and_CPP 關於我們 聯絡資訊
※ 引述《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 的第一句話所涵蓋了。