类是一种复杂的数据类型,是具有共同属性和行为的对象的抽象
类的静态属性 >> 特征
类的动态属性 >> 操作
数据成员:代表静态属性的数据
成员函数:共同拥有的动态特征的行为
类的定义格式
- 说明部分
- 有什么
- 做什么
- 实现部分
- 怎么做
类的定义以分号结束
所有类成员名称都是局部变量 >> 类外使用不会重名
- 访问权限(控制)修饰符
- public >> 公有属性
- private >> 私有属性
- protected >> 保护属性
类中成员默认属性 >> private
类的数据成员和成员函数可以根据需要声明为任意一种访问属性,声明时,顺序、次数任意
在类定义内部,所有成员间可以相互访问
在类外,只能以 “.” 的格式访问公有成员
类成员函数的两种实现方式
成员函数有权访问本类对象的所有成员
- 方式一:成员函数写在类内
# include <iostream> using namespace std; class CDate { private: int Date_Year; int Date_Month; int Date_Day; public: void SetDate(int year, int month, int day) { Date_Year = year; Date_Month = month; Date_Day = day; } void Display() { cout << "Date: " << Date_Year << "-" << Date_Month << "-" << Date_Day << endl; } int GetYear() { return Date_Year; } };
- 方式二:成员函数的实现放在类定义的外部
- 使用 “类名::” 来表名该函数不是一个普通函数
#include <iostream> using namespace std; class CDate { private: int Date_Year; int Date_Month; int Date_Day; public: void SetDate(int,int,int); void Display(); int GetYear(); }; void CDate::SetDate(int year, int month, int day) { Date_Year = year; Date_Month = month; Date_Day = day; } void CDate::Display() { cout << "Date: " << Date_Day << "/" << Date_Month << "/" << Date_Year << endl; } int CDate::GetYear() { return Date_Year; }
- 主函数实现
int main() { CDate date1, date2; int age=0; date1.SetDate(2019, 10, 15); date2.SetDate(2002, 10, 15); age=date1.GetYear()-date2.GetYear(); cout<<"He is: "<<age<<" years old."<<endl; cout<<"His birthday is: "; date2.Display(); return 0; }
内联函数
- 函数首部最前面增加关键字inline,则该函数被声明为内联函数
- 类的函数在类说明中实现时,默认为内联函数
优点
- 将调用表达式用内联函数体来替换
- 增加了目标程序代码量,增加了空间的开销
- 减少了时间开销
- 在内联函数中不使用递归、循环、开关语句