原创 五、关于类

2011-8-6 14:58 1490 7 7 分类: MCU/ 嵌入式

 关于类C++中主要包括枚举型数据和结构型数据。

1、关于枚举类型:定义枚举类型的位置应该在程序首次使用该类型之前,否则程序无法识别该类型。枚举类型中列出的常量称为枚举常量,它不是字符串也不是数值,而只是一些符号。枚举类型的格式为:

enum 类型名{常量1,常量2…;

好了,不多说了,还是写个小程序测试一下理解的会更透一些:

/*

* Copyright (c) 2011,菜鸟在行动之--C++学习日志

* All rights reserved.

* 

* 文件名称:main.cpp

* 文件标识:LESSON9-1-MAIN1

*     要:学习使用类 -- 关于枚举类型

* 

* 当前版本:1.0

*     者:懒猫爱飞

* 完成日期:20110717

*

* 取代版本:无 

* 原作者  :无

* 完成日期:无

*/

 

#include <iostream.h>

 

enum day{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}; // 定义枚举类型

 

// 函数声明

void NextDay(day &D); // 向后一天是星期几,参数为day类型,是程序首次使用该类型名

void Display(day D);  // 显示某一天是星期几

 

/*

 * 函数名称:int main(void)

 * 函数功能:主函数

 * 入口参数:无

 * 出口参数:无

 *     注:无

*/

int main()

{

day today = Sunday;

for(int i=0; i<7;i++)

{

     cout << "Data in day" << today << endl;

     Display(today);

     NextDay(today);

}

return 0;

}

 

/*

 * 函数名称:void NextDay(day &D)

 * 函数功能:向后一天是星期几

 * 入口参数:day &D -- 周几

 * 出口参数:无

 *     注:无

*/

void NextDay(day &D)

{

switch(D)

{

     case Sunday   : D = Monday;

                      break;

     case Monday   : D = Tuesday;

                      break;

     case Tuesday  : D = Wednesday;

                      break;

     case Wednesday: D = Thursday;

                      break;

     case Thursday : D = Friday;

                     break;

     case Friday   : D = Saturday;

                      break;

     case Saturday : D = Sunday;

                      break;

     default:break;

}

}

 

/*

 * 函数名称:void Dispaly (day D)

 * 函数功能:显示星期

 * 入口参数:day D -- 周几

 * 出口参数:无

 *     注:无

*/

void Display(day D)

{

switch(D)

{

case Sunday   : cout << "Sunday" << endl;

                 break;

case Monday   : cout << "Monday" << endl;

                 break;

case Tuesday  : cout << "Tuesday" << endl;

                 break;

case Wednesday: cout << "Wednesday" << endl;

                 break;

case Thursday : cout << "Thursday" << endl;

                 break;

case Friday   : cout << "Friday" << endl;

                 break;

case Saturday : cout << "Saturday" << endl;

                 break;

default:break;

          

}

}

通过程序可知,一个整数和一个枚举常量是一一对应,但仅仅是一一对应,而不是相等的关系。虽然枚举类型本质上是整数,但电脑还是会仔细检查数据类型,禁止不同类型的数据互相赋值,另外在一般情况下,枚举类型是不能进行算术运算的。

2、关于结构体:和定义枚举类型类似,定义结构类型位置必须在首次使用该类型名之前,否则程序无法正确识别该类型,定义结构类型后分号是必不可少的,否则会引起错误。定义结构体的格式是:

struct  结构体类型名

{

    数据类型 成员数据;

   数据类型 成员数据;

    数据类型 成员数据;

};

写一个小程序测试一下试试:

/*

* Copyright (c) 2011,菜鸟在行动之--C++学习日志

* All rights reserved.

* 

* 文件名称:main.cpp

* 文件标识:LESSON9-2-MAIN1

*     要:学习使用类 -- 关于结构体

* 

* 当前版本:1.0

*     者:懒猫爱飞

* 完成日期:20110720

*

* 取代版本:无 

* 原作者  :无

* 完成日期:无

*/

 

#include <iostream.h>

 

// 定义结构体

struct student

{

int  idNumber;          // ID

char name[15];          // 存放姓名

int  age;               // 存放年龄

char department[20];    // 存放院系名称

int  gpa;               // 存储分数

 

};

/*

 * 函数名称:int main(void)

 * 函数功能:主函数

 * 入口参数:无

 * 出口参数:无

 *     注:无

*/

int main()

{

student s1,s2;     // 定义两个结构体类型变量

cout << "请输入学号:" << endl;

cin >> s1.idNumber;

cout << "请输入姓名: " << endl;

cin >> s1.name;

cout << "请输入年龄: " << endl;

cin >> s1.age;

cout << "请输入院系: " << endl;

cin >> s1.department;

cout << "请输入分数: " << endl;

cin >> s1.gpa;

 

cout << "学生1的信息是:" << endl

      << "学生ID号码是: " << s1.idNumber   << endl

      << "学生的姓名是: " << s1.name << endl

      << "学生的年龄是: " << s1.age  << endl

      << "学生的院系是: " << s1.department << endl

      << "学生的成绩是: " << s1.gpa <<endl;

 

s2 = s1;  // s1赋值给s2

 

     cout << "学生2的信息是:" << endl

      << "学生ID号码是: " << s2.idNumber   << endl

      << "学生的姓名是: " << s2.name << endl

      << "学生的年龄是: " << s2.age  << endl

      << "学生的院系是: " << s2.department << endl

      << "学生的成绩是: " << s2.gpa <<endl;

 

return 0;

}

由小程序可知,相同类型的结构体变量可以用一个操作符“=,把一个变量的值赋值给另一个变量。结构体作为参数时,不同于数组,结构体是按值传递的,也就是说整个结构体的内容都复制给了形参,即使某些成员是数组。

 

 

每天进步一点点,开心多一点^_^

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条