詳解C++之類和對(duì)象(1)
c++類的由來(lái)(或者說(shuō)為什么要增加類):我們知道c語(yǔ)言是面向過(guò)程的語(yǔ)言,c++是即面向過(guò)程又是面向過(guò)程的語(yǔ)言。那么這兩個(gè)有著什么樣的區(qū)別和聯(lián)系呢?
C語(yǔ)言和C++的一大區(qū)別
接下來(lái)我們利用c語(yǔ)言的struct來(lái)說(shuō)明:
C 語(yǔ)言中,結(jié)構(gòu)體中只能定義變量。 在 C++ 中,結(jié)構(gòu)體內(nèi)不僅可以定義變量,也可以定義函數(shù)。 例如:如果我們用C語(yǔ)言實(shí)現(xiàn)一下的功能,那么我們會(huì)發(fā)現(xiàn),在struct內(nèi)我們只能去定義一些變量 的類型,而我們需要的函數(shù)反而要去單獨(dú)去實(shí)現(xiàn)
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++內(nèi)實(shí)現(xiàn)的話是:
// 這里是為了和c語(yǔ)言做出區(qū)別所以將函數(shù)的定義也直接放到結(jié)構(gòu)體內(nèi)作為內(nèi)聯(lián)函數(shù), 如果函數(shù)的定義代碼很多或者需要調(diào)用的次數(shù)多建議此處就只進(jìn)行聲明,之后在單獨(dú)進(jìn)行定義 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);//此處為了區(qū)別和c語(yǔ)言struct的不同點(diǎn)利用了c語(yǔ)言的輸出方法 } char _name[20]; int _age; char _sex[10]; };
從上述例子我們可以看出在c++中struct可以包含函數(shù)的定義和變量,反觀在c語(yǔ)言內(nèi)struct就只能包含變量。
struct和class的區(qū)別
在c++中我們引入一個(gè)關(guān)鍵詞class來(lái)指定指定這種既可以包含變量又可以包含函數(shù)聲明的類型即為c++的類。struct在c++中也是類但是和class修飾還是有一些區(qū)別。我們用上述代碼來(lái)說(shuō)明這個(gè)區(qū)別:
這是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]; }
在類中我們保護(hù)我們我們的數(shù)據(jù),我們引入三種修飾:public
、private
、protected
,這三個(gè)關(guān)鍵詞代表著不同的權(quán)限。
而struct默認(rèn)的是成員函數(shù)和成員變量都是public,而class修飾的話成員函數(shù)和成員變量都是必須給予修飾的,一般我們是將成員函數(shù)用public修飾而成員變量我們用private修飾。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
老生常談C語(yǔ)言動(dòng)態(tài)函數(shù)庫(kù)的制作和使用(推薦)
下面小編就為大家?guī)?lái)一篇老生常談C語(yǔ)言動(dòng)態(tài)函數(shù)庫(kù)的制作和使用(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08簡(jiǎn)要對(duì)比C語(yǔ)言中的setgid()函數(shù)和setregid()函數(shù)
這篇文章主要介紹了C語(yǔ)言中的setgid()函數(shù)和setregid()函數(shù)的簡(jiǎn)要對(duì)比,是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08C++實(shí)現(xiàn)二分法求連續(xù)一元函數(shù)根
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)二分法求連續(xù)一元函數(shù)根,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06詳解C++如何實(shí)現(xiàn)在Word文檔中創(chuàng)建列表
這篇文章主要為大家詳細(xì)介紹了介紹如何使用C++在Word文檔中創(chuàng)建編號(hào)列表、項(xiàng)目符號(hào)列表和多級(jí)列表,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05