C 中class和struct的區別

2021-06-27 14:22:19 字數 800 閱讀 6799

問:如題。

答:參見《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許可權。...