C 筆記(2)結構體和類

2021-09-25 06:31:06 字數 1649 閱讀 1277

個人宣告:本文僅作為作者本人記錄學習過程遇到的問題以及對這些問題的思考,作者也會隨著學習進度進行相應的修改。為了避免誤人子弟,請所有讀者在閱讀本文內容時,時刻保持懷疑的態度,用批判性眼光閱讀!

結構體實現

#include using namespace std;

//堆疊的資料物件集

typedef int position;

struct snode ;

//堆疊的操作集(函式宣告)

typedef struct snode *stack;

stack createstack( int maxsize );

bool isfull( stack s );

bool push( stack s, elementtype x );

bool isempty( stack s );

elementtype pop( stack s );

類實現

#include using namespace std;

//自定義堆疊類,儲存資料型別可變(模板)

template class stack;

在學習c++基礎知識的時候,我就有聽到乙個說法「結構體是特殊的類」,因為從【包含成員】的角度來看,結構體和類都有【資料成員】,唯獨少了【函式成員】。且不論這句話本身是對是錯(希望讀者也不要盲目肯定或否定),接下來我將由此出發,對結構體和類的區別做一些分析。

主要相同點:

都可以自由定義其資料成員(數量上、資料型別上的自定義)

結構體和類在定義後都需要例項化(即建立物件)後再進行使用。

主要區別:

相比結構體,類除了包含資料成員,還可以包含函式成員。即:類(資料物件集+操作集),結構體(資料物件集)。

類的成員(資料、函式)都可以限定訪問許可權(private、public、protected),而結構體中的成員在其生命週期內都可以直接訪問。

結合上文提到的結構體和類的區別,我們要想使用結構體或者類中的成員時,都需要乙個操作【呼叫】。而一般我們就是用訪問成員運算子來呼叫資料成員和函式成員。

目前就我了解,「.」運算子用於「物件的成員呼叫」,而「->」用於「物件指標的成員呼叫」。舉個例子:

//此處用結構體說明(類也是同理,只不過類有訪問許可權的概念,說明起來比較麻煩)

typedef struct student* pstu;

struct student;

//1. 首先我們建立乙個學生物件和物件指標

student stu1;

pstu pstu1;

//2. 通過物件訪問其資料成員(姓名、學號、成績)

stu1.stuid = 9527; //學號賦值

stu1.score = 710; //修改英語六級分數

//3. 通過物件指標訪問其資料成員

cout << pstu1->stuid << endl;

cout << pstu1->score << endl;

這就是這兩個成員運算子的使用區別了。

未完待續…

C 學習筆記16 結構體和類

結構體和類的區別 在做乙個專案時,使用了較多的結構體,並且存在一些結構體的巢狀,即某結構體成員集合包含另乙個結構體等,總是出現一些奇怪的錯誤,才終於下決心好好分析一下到底類和結構體有啥不同,雖然它們很相似,但確實有很大的不同,用不好難免出的問題會比較多,現總結一下 一 結構體和類非常相似 1,定義和...

C結構體 C 結構體 和 C 類的區別

c結構體 c 結構體基本相同,c 類主要是方法的實現。結構體是資料型別的集合 類是資料型別加方法的集合,基本如此,更注重方法。1.c的結構體和c 結構體的區別 1 c的結構體內不允許有函式存在,c 允許有內部成員函式,且允許該函式是虛函式。所以c的結構體是沒有建構函式 析構函式 和this指標的。2...

C 類和物件,結構體

趁著中秋放假要多補補知識了,感覺自己對c 了解的不夠紮實,為了更好的工作,只好再來看看。c和c 規定可以用乙個結構體,裡面即可有陣列,也可以有其他變數。c中成員只能是資料,c 除了資料,還可以是函式。但是,c 提供了類這個東西,所以不需要包含函式的結構體。1,結構體 include using na...