类和对象
1.类
首先,类这个字在新华字典中的解释为:很多相似事物的综合:种类。类群。类别。类书。分类。人类。它在面向对象中也有相同的意思。一类事物有不同于另一类事物的特性。比如属于移动通信类的手机可以即时通讯,上网冲浪。而属于家具类的桌椅却不太可能实现。我们在学习C语言时看到的的各种字符串函数如strcmp();strcat();strlen();都是属于String类的函数,在使用他们的时候必须添加#include <string.h>。
类在面向对象程序设计中,程序是由类构成的。类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述.
class Clock{ //class为类关键字 Clock则为类名
public: //外部接口,公有成员
void setTime(int newH,int newM,int newS);//行为,代码成员
void showTime();
private: //特定访问权限,私有成员
int hour,minute,sencond;//数据成员
};
相信大家刚开始看到这些注释心中不免有疑惑,这些什么公私有成员,接口,权限是什么意思,好抽象。
我们来举一个简单的例子。你想骑一辆车,于是你用手机扫描哈喽单车的二维码,这辆单车具有移动,刹车功能。当你骑完之后手机会显示你的骑行时间以及应缴金额。
这个二维码就相当于这辆单车的接口,任何人都可以扫它,所以是公有的,在类中我们用public来表示。而车辆的功能是你在扫描接口后才能使用的,在类中,我们叫它行为,也就是各个函数。你的骑行时间以及应缴金额则是由后台自动计算的,你能不能修改它呢?当然不能,所以这就是具有特定访问权限的私有成员。当然这只是一个简单的引入,与面向对象中的类的概念还有区别。
class->public->private,这个代表了类中的访问顺序的控制,你要访问私有成员,必须通过类,公有成员才能访问,不能直接访问私有成员。就像共享单车,要计时收费,必须先扫描二维码开启它。
声明类的对象(与声明变量相同)
类名 对象名
Clock myClock;
类的成员函数的实现
void Clock::setTime(int newH,int newM,int newS)
{
此处省略。。。。。。
}
类的成员函数的调用
myClock.showTime();
内联成员函数:如果有个函数需要频繁使用,且代码比较简单,就可以将这个函数定义为内联函数。
将内联函数直接放在类体内,为隐式声明
class Clock{ //class为类关键字 Clock则为类名
public: //外部接口,公有成员
void setTime(int newH,int newM,int newS);//行为,代码成员
void showTime();{
cout<<hour<<minute<<second<<endl;
}
private: //特定访问权限,私有成员
int hour,minute,sencond;//数据成员
};
为了保证类定义的简洁,可以采用关键字Inline显示声明的方式。
inline void Clock:: showTime();{
cout<<hour<<minute<<second<<endl;
}