詳解C++之類和對象(1)
c++類的由來(或者說為什么要增加類):我們知道c語言是面向過程的語言,c++是即面向過程又是面向過程的語言。那么這兩個有著什么樣的區(qū)別和聯(lián)系呢?
C語言和C++的一大區(qū)別
接下來我們利用c語言的struct來說明:
C 語言中,結(jié)構(gòu)體中只能定義變量。 在 C++ 中,結(jié)構(gòu)體內(nèi)不僅可以定義變量,也可以定義函數(shù)。 例如:如果我們用C語言實現(xiàn)一下的功能,那么我們會發(fā)現(xiàn),在struct內(nèi)我們只能去定義一些變量 的類型,而我們需要的函數(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)實現(xiàn)的話是:
// 這里是為了和c語言做出區(qū)別所以將函數(shù)的定義也直接放到結(jié)構(gòu)體內(nèi)作為內(nèi)聯(lián)函數(shù),
如果函數(shù)的定義代碼很多或者需要調(diào)用的次數(shù)多建議此處就只進行聲明,之后在單獨進行定義
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語言struct的不同點利用了c語言的輸出方法
}
char _name[20];
int _age;
char _sex[10];
};
從上述例子我們可以看出在c++中struct可以包含函數(shù)的定義和變量,反觀在c語言內(nèi)struct就只能包含變量。
struct和class的區(qū)別
在c++中我們引入一個關(guān)鍵詞class來指定指定這種既可以包含變量又可以包含函數(shù)聲明的類型即為c++的類。struct在c++中也是類但是和class修飾還是有一些區(qū)別。我們用上述代碼來說明這個區(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];
}
在類中我們保護我們我們的數(shù)據(jù),我們引入三種修飾:public、private、protected,這三個關(guān)鍵詞代表著不同的權(quán)限。
而struct默認的是成員函數(shù)和成員變量都是public,而class修飾的話成員函數(shù)和成員變量都是必須給予修飾的,一般我們是將成員函數(shù)用public修飾而成員變量我們用private修飾。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
關(guān)于C語言中數(shù)據(jù)在內(nèi)存中的存儲詳解
這篇文章主要給大家介紹了關(guān)于C語言中數(shù)據(jù)在內(nèi)存中的存儲的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
將CString字符串輸入轉(zhuǎn)化成整數(shù)的實現(xiàn)方法
下面小編就為大家?guī)硪黄獙String字符串輸入轉(zhuǎn)化成整數(shù)的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09
C語言創(chuàng)建線程thread_create()的方法
這篇文章主要介紹了C語言創(chuàng)建線程thread_create()的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02

