C++面向对象编程
概述
一切皆对象,一个程序就是由一组对象组成的一个整体,程序的功能是通过对象之间传递消息来完成的。
面向对象与面向过程的区别
例如:把大象装进冰箱需要几步,两者的解决方法:
面向过程:打开冰箱–>把大象塞进去–>关冰箱
面向对象:调用一个具有将大象塞进冰箱的类的功能
对象的描述及其类型
-
对象由共同特征和功能组成:
* 使用变量描述共同特征
* 使用函数描述功能 -
举例:
*学生的共同特征为:学号、姓名、班级……
*学生的功能为:吃饭、睡觉、学习…… -
对象类型的描述
(1) 使用结构体(struct)描述:
结构体中既可以有成员变量,也可以有成员函数。因此结构体可以来 表示对象类型,在C++中,对象的类型叫做类。(2) 使用struct实现时间对象实例
#include <iostream>
#include <unistd.h>
using namespace std;
//使用结构体声明对象类型
struct Time{
//特征 ---- 变量
int hour;
int min;
int sec;
//功能 ---- 函数
void print_time(){
cout<<hour<<":"<<min<<":"<<sec<<endl;
}
void set_time(int h=15,int m=30,int s=25){
hour = h;
min = m;
sec = s;
}
void run(){
sec++;
if(sec==60){
sec = 0;
min++;
if(min==60){
min = 0;
hour++;
if(hour==24)
hour = 0;
}
}
}
};
int main()
{
//使用结构体声明对象,不需要加struct
Time t;
t.hour = 1;
t.min = 2;
t.sec = 3;
//访问成员函数
t.print_time();
t.set_time(23,59,49);
while(1){
t.run();
t.print_time();
sleep(1);
}
return 0;
}
(3)使用类(class)描述:
①:class也可以用来描述对象类型,语法和struct几乎一致。
②:具有访问属性:public — 公有属性、protected — 受保护属性、 private — 私有属性。
③:因struct声明的类中的成员默认是公开的,class声明的类中成员默认是私有的。所以 在C++中一般不使用struct而使用class来声明类。
(4)使用class实现时间对象实例
#include <iostream>
using namespace std;
class Time{
//使用class声明对象类型
private: //私有
int hour; //特征 ---- 变量
int min;
protected