C 結構體與類的區別

2021-08-17 12:18:57 字數 1347 閱讀 5035

學習了c++的物件導向,最常見的和寫的就是類結構體,下面主要介紹一下結構體和類的區別。

首先類是c++中物件導向獨有的,但是c和c++中都有結構體,下面我們來看一下c和c++中結構體的區別。這裡主要從封裝、多型、繼承、封裝和訪問許可權幾個方面來說。

1、c和c++中結構體的區別

(1)多型:c的結構體內不允許有函式存在,但是有預設的建構函式,就是把所有的成員屬性設定為0,不能自定義。但是c的結構體是沒有建構函式、析構函式、和this指標的,所以沒有多型而言;c++允許有內部成員函式,且允許該函式是虛函式可以多型。

(2)繼承:c語言的結構體是不可以繼承的,c++的結構體是可以從其他的結構體或者類繼承過來的,和類一樣,實現了**的復用。

(3)封裝:c的結構體只是把資料變數給包裹起來了,並不涉及演算法,是一種「復合型別」,其功能基本與int ,double的用法相同,它主要解決多型別問題。而c++中是把資料變數及對這些資料變數的相關演算法給封裝起來,並且給對這些資料和類不同的訪問許可權。

(4)訪問許可權:c的結構體對內部成員變數的訪問許可權只能是public,而c++允許public,protected,private三種。

以上三點都是表面的區別,實際區別就是面向過程和物件導向程式設計思路的區別。

2.c++的結構體和c++類的區別

主要是訪問許可權的區別:

(1)c++結構體內部成員變數及成員函式預設的訪問級別是public,而c++類的內部成員變數及成員函式的預設訪問級別是private。

(2) c++結構體的繼承預設是public,而c++類的繼承預設是private。

例項**:

[cpp]view plain

copy

print

?

#include 

#include 

using

namespace std;  

struct student  

virtual

void show()  

int get_score()  

student()  

protected:  

int age;  

private:  

int score;  

};  

struct student1:public student  

void show()  

~student1()  

};  

int main()  

執行結果: 

C 結構體與類的區別

c 中的結構體型別 struct 型別是一種值型別,通常用來封裝小型相關變數組,例如,矩形的座標或庫存商品的特徵。下面的示例顯示了乙個簡單的結構宣告。public struct postaladdress 結構與類共享幾乎所有相同的語法,但結構比類受到的限制更多 儘管結構的靜態字段可以初始化,結構例...

C 結構體與類的區別

相同之處 c 中的結構體中可以包含函式,也可以定義public private protected資料成員 定義了結構體之後,可以使用結構體名來建立物件,但是c中的結構體不允許含有函式 即 在c 中,結構體中可以有成員變數,成員函式,可從別的類繼承,也可以被別的類繼承,可以含有虛函式 不同之處 結構...

C 中結構體與類的區別

學習了c 的物件導向,最常見的和寫的就是類結構體,下面主要介紹一下結構體和類的區別。首先類是c 中物件導向獨有的,但是c和c 中都有結構體,下面我們來看一下c和c 中結構體的區別。這裡主要從封裝 多型 繼承 封裝和訪問許可權幾個方面來說。1 c和c 中結構體的區別 1 多型 c的結構體內不允許有函式...