1、類是使用者定義的資料型別,定義時用class
typedef 不建立新型別,僅為已有型別定義別名。
列舉 獨特的型別,但它不是乙個類。
類 全新的,原始的型別。可應用於類物件的操作,完全由使用者定義。
union和struct建立的新型別,從技術上來看它們都是類。
2、結構型別:struct
struct book;
3、訪問成員用. 即句點,如:a.length
成員可以是函式,其函式體可在內部定義:
struct box
};
函式體也可在結構體外定義:struct box
;double box::volume()
和類一樣,體外的函式前面必須有box類似的限定,表明這個是其中的成員函式,與其它函式是不同的。
和標頭檔案一樣,體外定義是我們的首選,這樣,宣告與定義分開,便於組織**,有時還會用到預編譯中的東東。
注意:同一型別的多個物件,其函式**只在記憶體中有乙個副本。
4、結構體型別的指標:
定義: box *p=&a
或: box *p=new box;//在自由儲存區分配,並將指標給p,注意其內容是野值,須明確地初始化。最後要delete p進行掃尾
使用: (*p).length=3.2; //注意必須用括號,因為.點運算比解除指標*更優先,不加括號會先用點再*
p->length=3.2; // 這種更常用。
5、聯合型別 union 由於最初記憶體很貴,為了節約記憶體而使用同一塊記憶體「不同時期」儲存不同的型別的值。以節約記憶體。
因此sizeof的結果就是這個結構中最大資料型別的長度。
union shareld
; //只會初始化lval,否則你應單獨用ok.dval=3.5進行初始化。
6、匿名聯合:沒有型別名稱的聯合
union
; //沒有型別名,這樣的聯合型別,則直接使用成員員進行引用或賦值。
匿名union還具有以下約束:
1).因為匿名聯合不使用點運算子,所以包含在匿名聯合內的元素必須是資料,不允許有成員函式,也不能包含私有或受保護的成員;
2).全域性匿名聯合必須是靜態(static)的,否則就必須放在匿名名字空間中.
網友的評價:
直接在類裡定義成為類的成員吧,我記得是這麼用的
曾經看過乙個ui庫,他把大小相同的型別都放在乙個聯合裡面,這樣就不用型別轉換了
其實聯合主要用作型別轉換
7、各型別的「聯合演出」
enum type=;//列舉型別,注意大寫
struct sharedate
; type type;//列舉型別
};sharedate value=;//同value=,列表總初始化第乙個
} if(value.type==long) value.ldata++;//應用情況
通過包裝定製自己的資料型別
需求 通過繼承來構建自己的資料型別 例子 列表中只能新增字串 1 class list list 2def 3if type object str 4 使用父類中的方法6 7print 8print 9else 10 print 只能新增字串 1112 if name main 13 list li...
MYSQL 的 3 類資料型別
1 資料型 bool,float,double decimal m,d m是小數字數 精度 的總數,d是小數點 標度 後面的位數 decimal整數最大位數 m 為65。smallint 小的整數。帶符號的範圍是 32768到32767。無符號的範圍是0到65535。mediumint 中等大小的整...
Day 8定義自己的資料型別
基於繼承的方式定義自己的列表型別 class lxy list def print p object ifnot isinstance p object,int raise typeerror must be int definsert self,index int,p object int if ...