(十一)开创自己的数据类型:类的开始
来源:互联网 发布:淘宝10元麦克风 编辑:程序博客网 时间:2024/06/06 01:59
1、类是用户定义的数据类型,定义时用class
typedef 不创建新类型,仅为已有类型定义别名。
枚举 独特的类型,但它不是一个类。
类 全新的,原始的类型。可应用于类对象的操作,完全由用户定义。
union和struct创建的新类型,从技术上来看它们都是类。
2、结构类型:struct
struct Book{
char title[80];
char author[80];
int year;
};
1、每个元素,由基本元素或已经定义的自定义元素组成,并以分号结束。 此元素又称“数据成员”或“成员”。
2、类型定义完成后以分号结束。
3、可以用sizeof来计算一个自定义类型的所点大小。(注意边界对齐,后章介绍)
4、结构内不能包括自己结构的类型,这样将出现死循环。可以有自身类型的指针。
5、可以在最后右花括号侧定义这种类型的变量。
6、聚合:可以用初始化列表来初始化对象时,称聚合。如果其成员包含有类类型,则不能用聚合来初始化。若列表值少于成员数,则以0来初始那些未初始的。
注意这个可以用于基本类型如:int a={3};
3、访问成员用. 即句点,如:a.length
成员可以是函数,其函数体可在内部定义:
struct Box{double length;double width;double height;double volume(){return length*width*height;}};函数体也可在结构体外定义:
struct Box{double length;double width;double height;double volume();};double Box::volume(){return length*width*height;}
和类一样,体外的函数前面必须有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
{ long Lval;
Double Dval;
};
同结构一样,元素(成员)有分号,结尾有分号。不同的是,某一时期只有一种结果(类型)存储在内,若强制用另一个成员类型显示,会有奇异结果出现。
当用初始化列表初始化时,总是初始化第一个元素。否则,你应单独列出后面元素进行初始化
shareLD ok={3.5}; //只会初始化Lval,否则你应单独用ok.Dval=3.5进行初始化。
6、匿名联合:没有类型名称的联合
union
{ char *p;
long Lval;
double Dval;
}; //没有类型名,这样的联合类型,则直接使用成员员进行引用或赋值。
匿名union还具有以下约束:
1).因为匿名联合不使用点运算符,所以包含在匿名联合内的元素必须是数据,不允许有成员函数,也不能包含私有或受保护的成员;
2).全局匿名联合必须是静态(static)的,否则就必须放在匿名名字空间中.
网友的评价:
enum Type={Double,Float,Long,Int};//枚举类型,注意大写 struct shareDate{union //匿名联合 {double dData;float fData;long lData; int iData;};Type type;//枚举类型 };shareDate value={2.5,Double};//同value={2.5},列表总初始化第一个 } if(value.type==Long) value.lData++;//应用情况
- (十一)开创自己的数据类型:类的开始
- 开创自己的项目
- “十一”长假的开始
- 也来这里开创自己的一个空间
- 20160310_开创自己的网络文章空间
- 开创我的CSDN
- 开始自己的网络生活
- 开始自己的生活。
- 开始自己的博客
- 写给开始的自己
- 开始自己的五年计划
- 开始自己的征程
- 用理智与战策家的眼光去开发共享软件,开创自己的事业
- java学习笔记(十一)基本数据类型的对象包装类
- 马宁开创中国自己的新男色风尚,妖男时代来临!
- 大数据时代如何借势互联网开创自己的互联网事业
- 联诚发(LCF)租赁屏,开创你的精彩视界
- 这十一个新的开始
- 嵌入式Linux之Kernel(裁减移植)启动调试技术
- 嫣然一笑苦了情
- MySql 数据类型转换
- mfc edit 自动换行
- 简单读取带有EXCEL宏病毒文件的内容
- (十一)开创自己的数据类型:类的开始
- SQL学习快速链接
- android surfaceflinger
- SYBASE & ORACLE自增主键
- 重载CMFCRibbonButton
- 初学Android,监控ContentProvider的数据改变(五十七)
- Linux文件系统之文件的读写
- C#中判断是否为数字
- makefile自动化编译学习