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;

posted @ 2012-09-20 23:18  retacn_yue  阅读(149)  评论(0编辑  收藏  举报