詳解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)文章
關(guān)于C語(yǔ)言中數(shù)據(jù)在內(nèi)存中的存儲(chǔ)詳解
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中數(shù)據(jù)在內(nèi)存中的存儲(chǔ)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
將CString字符串輸入轉(zhuǎn)化成整數(shù)的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇將CString字符串輸入轉(zhuǎn)化成整數(shù)的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09
C語(yǔ)言創(chuàng)建線程thread_create()的方法
這篇文章主要介紹了C語(yǔ)言創(chuàng)建線程thread_create()的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
C語(yǔ)言中無(wú)符號(hào)數(shù)和有符號(hào)數(shù)之間的運(yùn)算
C語(yǔ)言中有符號(hào)數(shù)和無(wú)符號(hào)數(shù)進(jìn)行運(yùn)算默認(rèn)會(huì)將有符號(hào)數(shù)看成無(wú)符號(hào)數(shù)進(jìn)行運(yùn)算,其中算術(shù)運(yùn)算默認(rèn)返回?zé)o符號(hào)數(shù),邏輯運(yùn)算當(dāng)然是返回0或1了。下面通過(guò)一個(gè)例子給大家分享C語(yǔ)言中無(wú)符號(hào)數(shù)和有符號(hào)數(shù)之間的運(yùn)算,一起看看吧2017-09-09
C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
C++ Array容器的顯示和隱式實(shí)例化詳細(xì)介紹
這篇文章主要介紹了C++中Array容器的隱式實(shí)例化和顯式實(shí)例化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-10-10
C語(yǔ)言實(shí)現(xiàn)掃雷小游戲(擴(kuò)展版)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)擴(kuò)展版的掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05

