`

c++学习笔记十

    博客分类:
  • c++
 
阅读更多

创建自已的数据类型


1 对像的概念
2 c++中的结构
定义结构类型 格式如下:
struct Book{
char title[80];
char author[80];
char publisher[80];
int year;
};
声明结构类型的变量
struct Book paperback;
创建结构类型的对像(数组类似)
Book novel={
"thinking in java",
"yuezhenhua",
"xinhua";
2012
};
访问结构对像的成员 novel.year


对结构使用指针
Book * pBook=0;
如果定义了一个对象aBook
pBook=&aBook;
自由存储区中创建对象
Book cBook=new Book();
通过指针访问结构成员
示例代码如下: //定义一本书
Book theBook={...};
//声明一个指向Book对像的指针
Book * pBook=&theBook;
//可以用指针去访问他的数据成员
(*pBook).year+=10;
指针成员访问运算符: ->
这样上面的语句就可以改写为:
pBook->year+=10;
对象指针的应用:
一、在自由存储区中创建和访问对象
二、链表
三、实现多态性
3 联合 是一种数据类型
使用联合的三种方式:
一、在同一内存块中存储程序中不同时期的不同变量
二、涉及数组,为了节省大量内存
三、以两种或更多种不同的方式来解释相同的数据
声明联合 使用union
示例代码如下:(为long类型和double类型提供一个共同的存储空间)
union ShareLD(){
double dVal;
long lVal;
};
声明联合的一个实例
一种方式:ShareLD myUnion;
还有一种方式: union ShareLD(){
double dVal;
long lVal;
}myUnion;
引用联合的成员: myUnion.dVal=100;
匿名联合:
union ShareLD(){
double dVal;
long lVal;
};
4 更复杂的结构
为了节省内存,必须让变量共享内存 示例代码如下:
union Item{
double dData;
float fData;
int iData;
long lData;
};
item可以存储以上四种类型的任何一种,但在任意时候只能存储一种类型的


值 如下:
Item value;
value.dData=25.0;
稍后可以 value.lData=5; 此时存储的数值变为long类型
所以要有一中检查类型的方法
可以使用枚举的方式: enun{double,float,int,long};


声明两个成员的结构, 一个是成员变量,一个是成员类型
struct ShareData{
union{ //匿名联合 成员变量
double dData;
float fData;
long lData;
int iData;
};
Type type; //成员类型
}
声明ShareData类型的变量 ShareData value={3.0,double}; //第一个为


值,第二个为类型
只要在每次设置值时,设置类型,就可以检测所存储值的类型
if(value.type==long){ //执行对应操作};


把结构作为成员
例如:struct Person{
Name name; //
Data birthday; //
phone number; //
};
Person 的成员对应三个结构
struct Name{
char firstname[80];
char surname[80];
};
struct Data{
int day;
int nonth;
int year;
};
struct Phone{
int areacode;
int number;
}


声明结构对象的方式;
一、 Person him;
二、也可以在声明变量时初始化列表
peroson yue={
{"yue","zhenhua"},
{4,9,1984},
{15865547898}
};
引用成员的值 yue.Name.firstname;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics