您好,登錄后才能下訂單哦!
怎么理解C++中的類和對象,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
c++類的由來(或者說為什么要增加類):我們知道c語言是面向過程的語言,c++是即面向過程又是面向過程的語言。那么這兩個有著什么樣的區別和聯系呢?
接下來我們利用c語言的struct來說明:
C 語言中,結構體中只能定義變量。 在 C++ 中,結構體內不僅可以定義變量,也可以定義函數。 例如:如果我們用C語言實現一下的功能,那么我們會發現,在struct內我們只能去定義一些變量 的類型,而我們需要的函數反而要去單獨去實現
typedef struct Student { char _name[20]; int _age; char _sex[10]; }student; void SetStudentInfo(const char* name, const char* sex, int age) { strcpy(_name, name); strcpy(_sex, gender); _age = age; } void print(student *s) { printf("%c:%age-%c", s->_name, s->_age, s->_sex); }
在c++內實現的話是:
// 這里是為了和c語言做出區別所以將函數的定義也直接放到結構體內作為內聯函數, 如果函數的定義代碼很多或者需要調用的次數多建議此處就只進行聲明,之后在單獨進行定義 struct Student { void SetStudentInfo(const char* name, const char* sex, int age) { strcpy(_name, name); strcpy(_sex, gender); _age = age; } void print(student *s) { printf("%c:%age-%c", s->_name, s->_age, s->_sex);//此處為了區別和c語言struct的不同點利用了c語言的輸出方法 } char _name[20]; int _age; char _sex[10]; };
從上述例子我們可以看出在c++中struct可以包含函數的定義和變量,反觀在c語言內struct就只能包含變量。
在c++中我們引入一個關鍵詞class來指定指定這種既可以包含變量又可以包含函數聲明的類型即為c++的類。struct在c++中也是類但是和class修飾還是有一些區別。我們用上述代碼來說明這個區別:
這是struct修飾的類
struct Student { void SetStudentInfo(const char* name, const char* sex, int age); void print(student *s) char _name[20]; int _age; char _sex[10]; }
這是class修飾的類
struct Student { public: void SetStudentInfo(const char* name, const char* sex, int age); void print(student *s) private: char _name[20]; int _age; char _sex[10]; }
在類中我們保護我們我們的數據,我們引入三種修飾:public
、private
、protected
,這三個關鍵詞代表著不同的權限。
而struct默認的是成員函數和成員變量都是public,而class修飾的話成員函數和成員變量都是必須給予修飾的,一般我們是將成員函數用public修飾而成員變量我們用private修飾。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。