C 中結構體與類的區別

2021-07-24 01:47:42 字數 1312 閱讀 6066

學習了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

#include 

#include 

using

namespace

std;  

struct

student  

virtual

void

show()  

intget_score()  

student()  

protected

:  int

age;  

private

:  int

score;  

};  

struct

student1:

public

student  

void

show()  

~student1()  

};  

intmain()  

C 中結構體與類的區別

1,定義和使用非常相似,例子如下 public struct student public class question 使用 student s new student question q new question 2,兩者都是container型別,這表示它們可以包含其他資料型別作為成員。3,...

C中結構體與C 中類的區別

一 先說一下c中的結構體 作用 為了將不同型別的資料組合成乙個有機的整體。1 定義結構體變數的方式,例子 struct student 結構體型別名 struct student lucy 結構體變數名 struct student p lucy 結構體指標變數名 解析 1 結構體型別名 stude...

C 中的結構體與類的區別

類與結構體在c 中只有兩點區別,除此之外無任何區別。1 class中預設的成員訪問許可權是private的,而struct中則是public的。2 從class繼承預設是private繼承,而從struct繼承預設是public繼承。成員運算子 和指向結構體成員運算子 的區別 兩者都是用來引用結構體...