C++程序设计的特征:抽象性 封装性 继承性 多态性
一. 类
- 封装:把对象的属性和行为结合成一个独立的单位,又称封装体。(具有独立性和隐藏性)
- 继承:特殊类的对象拥有其一般类的全部属性和行为。
- 多态:一种行为对应多种不同的实现(eg:函数重载、运算符重载)
1.1 类的定义
类是一种数据类型,定义格式如下:
class Clock//类名
{
public:
void SetTime(int Newh,int Newm,int News);
void Showtime(); //成员函数或数据成员的说明和实现
private:
int Hour ,Minute,Second;//数据成员和成员函数的说明和实现
};
//类的使用
/* 函数类型 类名 :: 成员函数名
{
函数体
}
*/
1.2 类中成员函数的实现
void Clock::SetTime(int Newh,int Newm,int News){
Hour=Newh;
Minute=Newm;
Second=News;
}
void Clock::Showtime(){
cout<<Hour<<":"<<Minute<<":"<<Scend;
}
注意:类中不允许对数据成员进行初始化
eg:
private:
int Hour(10),Minute(30),Second(45);
是错误的表达。
二.对象
2.1 对象的两个要素
1.属性:描述对象静态特征的数据项。
2.行为:描述对象动态特征的操作代码。
2.2 对象的定义
类的对象是该类的一个特定实体,即类 类型的变量
定义格式如下:
// 类名 对象名表
Clock Myclock,*pc,clock[30] ;
Clock &cl=Myclock ; //c1是Myclock的引用,对c1的操作就是对Myclock的操作
//c1称为引用变量
2.3 对象成员的表示方法
2.3.1 一般对象的成员表示用“.”
对象名.数据成员名
对象名.成员函数名
eg:
Clock Myclock;//对象声明
Myclock.SetTime(10,12,14);
2.3.2 指向对象指针的成员用“->"
对象指针名->数据成员名
对象指针名->成员函数名
eg:
Clock *pc = &Myclock; //指针使用前必须初始化
pc->SetTime(10,12,14);
2.3.3 对象数组元素的成员表示与一般对象相同
eg:
Clock cl[3] ; //声明
cl[0].SetTime(10,12,14);
例题
#include<iostream>
using namespace std;
//定义类
class Data {
public:
//成员函数及函数体
void SetData(int y, int m, int d) {
year = y;
month = m;
day = d;
}
int IsLeapYear() {
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
//判断是否是闰年
//返回判断year%4是否等于0且year%100不等于0或year%400等于0的结果(1或0)
}
void Print() {
cout << year << '/' << month << '/' << day << endl;
}
private:
//数据成员说明
int year, month, day;
};
int main() {
Data d1, d2, * pd = &d2; //定义对象名
d1.SetData(2005, 6, 24); //对象函数成员的访问
pd->SetData(2000, 2, 8); //对pd的操作就是对d2的操作
cout << d1.IsLeapYear() << "," << d2.IsLeapYear() << endl;
d1.Print();
d2.Print();//调用类中的成员函数
return 0;
}