詳解C++之類和對象(1)

c++類的由來(或者說為什麼要增加類):我們知道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就隻能包含變量。

struct和class的區別

在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];
}

在類中我們保護我們我們的數據,我們引入三種修飾:publicprivateprotected,這三個關鍵詞代表著不同的權限。

而struct默認的是成員函數和成員變量都是public,而class修飾的話成員函數和成員變量都是必須給予修飾的,一般我們是將成員函數用public修飾而成員變量我們用private修飾。

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: