类的定义、声明和引用

类的概念

什么是实体?

客观世界中存在的某个事物是实体,程序中通过对实体抽出若干的特征和功能来抽象的描述实体,特征是实体的静态属性,功能是实体的动态属性。
在这里插入图片描述
抽象描述学生
特征:姓名、学号、性别、年龄、身高
功能:学习、跑步、听、说、读、写
特征和功能密切相关,不可割裂
对象=实体的特征(数据)+实体的功能(函数)

什么是类?

具有相同特征和功能的对象集合。
如:所有红旗轿车→红旗轿车类
对象是类的一个实例或个体或元素
int k; k称为整数变量,又称整数对象

类与结构体

结构体又称特殊的类
语法格式相似
先定义类的数据成员和函数成员
再声明具体对象(变量)
然后使用对象(变量)

类的定义

类的定义格式

class<类名>
{
private:
//私有成员,外界能够直接访问,起着接口的作用
public:
//公有成员,外界不能直接访问,使得成员被隐藏起来
protected;
//保护成员
};
一个实体的属性往往被定义为私有成员,方法被定义为公有成员
各成员的访问权限应根据实际需要确定

实体钟表如何抽象描述

特征(数据成员):
时、分、秒
型号、生产厂、价格
功能(函数成员):
设置时间、钟表运转、报时响铃、显示时间

class  Clock	//定义钟表类
{
	private:     
		int Hour;	//小时属性
		int Minute;	//分钟属性
		int Second;	//秒属性
		float Price;	//价格属性
	public:
		void Set(int h,int m,int s,float p);	//设置时间操作
		void Run();	//钟表运转操作
		void Report_Time();	//报时响铃操作
		void Show_Time();	//显示时间操作
};

类中的数据成员不能使用表达式进行初始化

成员函数两种定义方法

1.再类体内直接定义函数成员,该成员函数又称内联函数(格式等同于一般函数定义格式)
2.在类体外定义函数成员
格式:
<格式><类名>::<函数名>(<参数表>) //::作用域符
{
<函数体>
}
内联函数:

void Show_Time(){cout<<Hour<<’:’<<Minute<<’:’<<Second;};

类外定义成员函数:

 void Clock :: Set(int h,int m,int s,float p)	//设置修改4个数据成员的值的函数
 {
	Hour=h;
	Minute=m;
	Second=s;
	Price=p;
}
void Clock :: Run()	//模拟运行钟表运行函数
{
	int i=0;
	for(i=0;i<10;i++)	//只模拟运行10秒
	{
		Second++;
		if(Second==60)
		{
			Second=0;
			Minute++;
			if(Minute==60)
			{
				Minute=0;
				Hour++;
				if(Hour==24)
					Hour=0;
			}
		}
		cout<<'\r';		//不换行,返回当前行的首位
		Sleep(1000);	//程序暂停运行秒
		Show_Time();
	}
}
viod Clock :: Report_Time()
{
	Show_Time();
	if(Minute==0 && Second==0)
	{
		for(int i=0;i<Hour;i++)
		{
			cout<<"\007";	//响铃
			Sleep(1000);
		}
	}
}

通过类中提供的函数对类中的数据进行操作,达到数据的安全性

对象的声明

用已定义的类去声明对象(即变量),类似于结构体
声明对象的一般形式(类的实例化)
<类名><对象1>,<对象2>,······;

对象的引用

对象的引用类似于结构体
对类中成员的访问,采用“.”运算符
一般在类体外,只有公有成员可以采用“.”运算符
私有、保护成员都不能采用“.”运算符,可以直接进行对象赋值

对钟表类测试主函数
int main()
{
	Clock Big_Ben;
	Big_Ben.Set(0,0,0,100);
	cout<<"钟表设置时间:\n";
	Big_Ben.Show_Time();
	Big_Ben.Rnport_Time();
	Big_Ben.Run();
	Big_Ben.Set(9,59,50,900);
	cout<<"\n钟表设置时间:\n";
	Big_Ben.Run();
	Big_Ben.Report_Time();
	cout<<endl;
	Big_Ben.Show_Time();
	cout<<endl;
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值