(C++中的)結構體與類的異同
轉載來源:https://zhidao.baidu.com/question/115443908.html
當接觸面向對象(例如C++)之后,細心的同學心中就會有這樣的疑惑了,結構體和類的作用似乎有異曲同工之處,那么,在一般寫程序時,在結構體和類之間,到底該選哪一個呢?所以,今天我們來說一下結構體和類究竟有什么異同。
首先,我們需要了解它們定義的形式,如下:
1 //結構體定義形式 2 typedef struct Student{ 3 int age; 4 int number; 5 char name[20]; 6 }; 7 //類的定義形式 8 class Student{ 9 private: 10 int age; 11 int number; 12 char name[20]; 13 public: 14 };
我們發現,在C++中,結構體與類的定義形式很相似。實際上,C++中,定義結構體甚至可以省略掉typedef關鍵字,再來看看它們如何定義對象變量,如下:
1 //結構體定義對象變量 2 Student stu1; 3 //類中定義對象變量 4 Student stu2;
定義方式可謂是一模一樣。(在這里需要強調的是,在C語言中,須這樣定義---struct Student stu1,C++對其進行優化,使結構體在定義變量的時候可以不再需要struct關鍵字)
說了相同之處,那么,它們的不同之處在什么地方體現呢?
1.結構體一般用來封裝數據,其內部所有成員均為public屬性,而類中的成員默認為private(私有)屬性的。
2.雖然兩者都能定義函數,但類有專屬的構造函數,析構函數等先天具備的函數
3.類具有三種屬性,即(private,public,protected),而結構體只有public默認屬性
4.類還具有三種繼承方式,即有9種訪問權限。結構體只有一種。
以上即是C++種結構體與類的基本異同,如有錯誤以及不足之處,望明確指出,一定加以改正。
