問:如題。
答:參見《c++ primer 中文版》的57頁,用class和struct關鍵字定義類的唯一差別在於預設訪問級別:預設情況下,struct的成員為public,而class的成員為private。另外乙個區別:「class」這個關鍵字還用於定義模板引數,就像「typename」。但關鍵字「struct」不用於定義模板引數。
這是乙個很簡單的面試題,可是曾經引起一大些的爭論,詳細的爭論請看下帖:
個人感覺最有力的理解就是試一下42樓的程式:
#include
struct test
virtual v_proc()
~test()
int operator +(const int a)
};struct test_ch : public test
virtual v_proc()
~test_ch() };
class ctest
~ctest()
};int main()
運算結果為:
test.
test.v_proc.
o_test->operator +(5)=6
~test.
test.
test_ch.
test_ch.v_proc.
o_test_ch->operator +(6)=7
~test_ch.
~test.
ctest.
~ctest.
press any key to continue。
#c++面試題深思
C 中struct和class的差別
在c 中,struct和class除了預設訪問控制級別不一樣,其它別無二致,具體怎麼用,純屬於個人習慣。另 在stroustrup c 發明者 的原作中 他自己說的原句是 按照定義,乙個struct就是乙個類,而只是完全公開的類 所以 struct s 等價於class s public 也就是說,...
c 中struct和class的區別
有這麼幾點不同 1.struct 是值型別,class是物件型別 2.struct 不能被繼承,class可以被繼承 3.struct 預設的訪問許可權是public,而class預設的訪問許可權是private.4.struct不能由程式設計師申明建構函式,即使是預設 不帶引數 的建構函式,同樣也...
C 中 struct 和 class 的區別
從語法上,class和struct做型別定義時只有兩點區別 一 預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理 二 成員的預設訪問許可權。class的成員預設是private許可權,struct預設是public許可權。...