关于类C++中主要包括枚举型数据和结构型数据。
1、关于枚举类型:定义枚举类型的位置应该在程序首次使用该类型之前,否则程序无法识别该类型。枚举类型中列出的常量称为枚举常量,它不是字符串也不是数值,而只是一些符号。枚举类型的格式为:
enum 类型名{常量1,常量2…};
好了,不多说了,还是写个小程序测试一下理解的会更透一些:
/*
* Copyright (c) 2011,菜鸟在行动之--C++学习日志
* All rights reserved.
*
* 文件名称:main.cpp
* 文件标识:LESSON9-1-MAIN1
* 摘 要:学习使用类 -- 关于枚举类型
*
* 当前版本:1.0
* 作 者:懒猫爱飞
* 完成日期:2011年07月17日
*
* 取代版本:无
* 原作者 :无
* 完成日期:无
*/
#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
* 作 者:懒猫爱飞
* 完成日期:2011年07月20日
*
* 取代版本:无
* 原作者 :无
* 完成日期:无
*/
#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;
}
由小程序可知,相同类型的结构体变量可以用一个操作符“=”,把一个变量的值赋值给另一个变量。结构体作为参数时,不同于数组,结构体是按值传递的,也就是说整个结构体的内容都复制给了形参,即使某些成员是数组。
每天进步一点点,开心多一点^_^
文章评论(0条评论)
登录后参与讨论