c 筆記 自定義資料結構

2021-10-11 06:21:07 字數 1849 閱讀 1476

三、使用結構體

四、結構體(struct)和類(class)區別

總結從最基本的層面理解,資料結構是把一組相關的資料元素組織起來然後使用它們的策略和方法。

定義結構體可以使用關鍵字struct開始,緊跟著是類名和類體(其中類體部分可以為空)。類體由花括號包圍形成了乙個新的作用域。結構體內部定義的名字必須唯一,但是可以與結構體外部定義的名字重複。

//定義sales_data類

struct sales_data

;

類體右側的表示結束的花括號後必須寫乙個分號,這是因為類體後面可以緊跟著變數名,以示對該型別物件的定義,所以分號必不可少:

struct sales_data accum, trans,

*salesptr;

//與上一條語句等價,但可能更好一些,建議這樣書寫

struct sales_data

;sales_data accum, trans,

*salesptr;

分號表示宣告符(通常為空)的結束。一般來說,最好不要把物件的定義和類的定義放在一起。

注意:在類定義的最後加上分號。

結構體定義結構成員,我們的結構成員只有資料成員。結構體的資料成員定義了結構的物件的具體內容,每個物件都有自己的乙份資料成員拷貝。修改乙個物件的資料成員,不會影響其他sales_data的物件。

定義資料成員的方法和定義普通變數一樣:首先說明乙個基本型別,隨後基本乙個或多個宣告符:

//定義sales_data類

struct sales_data

;

上面的**,我們的結構體有3個資料成員:乙個名為bookno的string的成員、乙個名為units_sold的unsigned成員和乙個名為revenue的double成員。每個sales_data的物件都包括這3個資料成員。

c++11新標準規定,可以為資料成員提供乙個類內初始值

建立物件時,類內初始值將用於初始化資料成員。沒有初始值的成員將被預設初始化。因此定義sales_data的物件時,units_sold和revenue都將初始化為0,bookno將初始化為空字串。

上面自定義的sales_data類沒有提供任何操作,假設我們在sales_data類上實現求兩次交易相加結果的功能。程式的出入是下面這兩條交易記錄:

0

-201

-78345

-x 3

20.000-

201-

78345

-x 2

25.00

每筆交易記錄著圖書的isbn編號、售出數量和售出單價。

因此sales_data類沒有提供任何操作,所以我們必須自己編寫實現輸入、輸出和相加的功能:

#include

#include

using

namespace std;

//定義sales_data類

struct sales_data

;int

main

(void

)else

}

1:為了相容c語言,c語言沒有關鍵字class。

2:struct結構體無法定義成員函式,且沒有訪問控制許可權、繼承、包含多型等物件導向特性。

3:struct和class的預設訪問許可權不同,struct預設訪問許可權是公開的(public),而class預設訪問許可權是私有的(private)。

1.如何定義乙個結構體?->使用關鍵字strcut。

C 自定義資料結構初探

疫情所迫,希望用這種方法督促自己堅持學習。同時記錄在找工作過程中的艱辛不易。部落格內容持續增減修改,都為摘錄和個人理解。歡迎各位批評指正其中錯誤,相互勉勵,共同進步。c 允許使用者自定義自己的資料型別。資料結構是把一組相關的資料元素組織起來然後使用的方法策略。例如,本例中我們以書店的售賣書籍清單為例...

自定義資料結構 MyHashMap

size medium 在學習了資料結構hashmap之後,自己也定義了乙個myhashmap,下面來解析一下myhashmap。size size x large 1 實質為乙個陣列 size size medium 我定義的myhashmap中所使用的資料結構是乙個陣列,資料都儲存在這個陣列中。...

資料結構 自定義佇列

用鍊錶建立佇列 public class linkqueueimplements queue public node e e public node override public string tostring private node head private node tail private...