类与对象(部分)

类与对象及数据的共享和保护(部分)

类:面向对象设计方法的核心概念

主要特点:抽象,封装,继承,多态

抽象:指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。
以时钟为例:时钟有显示时间,设置时间等简单功能,也有时分秒三个整数存储时间。
数据抽象
int hour,int minute,int second
功能抽象
showTime(),setTime()

封装:将抽象得到的数据和行为(或功能)相结合,形成一个有机整体,也就是将数据与操作数据的代码进行有机的结合形成“类”,其中数据和函数都是类的成员。

时钟类:封装的体现,由成员函数与数据构成,一般将public写在前面。

// clock class declaration
class Clock{        //类的名字一般大写首字母
public:           //与外界的接口
	void setTime(int h,int m,int s); //设置时间的prototype
	void showTime();  //显示时间的prototype
pravite:
	int hour,minute,second;  //访问权限:私有数据仅能被成员函数访问,不可被外部访问
};        //结尾的分号不能丢

对象:类的对象是该类型的变量,声明一个对象和声明一个一般变量相同
Clock myclock; //类名 变量名

说到对象,那就离不开构造函数啦

构造函数(constructor)
1.在程序执行过程中,当遇到对象声明语句时,程序会向操作系统申请一定的内存空间用于存放新的对象,此时自动调用构造函数用于对象的初始化。在每个对象的生命期只被调用一次。
2.可以被重载,编译器在程序员没有定义构造函数的时候会自动生成无参数的构造函数,即缺省构造函数,如果程序员定义的构造函数无参数或者有缺省值,都是缺省构造函数。缺省构造函数有且只有一个。
3.对于非缺省构造函数,实参的个数必须与构造函数的参数个数一致,若是缺省构造函数,则实参个数可以少于形参个数。

分类

默认构造函数(default constructor)复制构造函数(copy constructor)
调用时无需提供参数的构造函数,由编译器生成传递引用,在建立对象时可用同一类的另一个对象来初始化该对象时调用复制构造函数

栗子:

//Time.h
class Time{
public:
	Time(); //no paramter constructor
	Time(int hour,int minute,int second);  //constructor
	Time(const time &p); //copy constructor
	void SetTime(); //member function
	void ShowTime(); //member function
	~Time(); //destructor
private:
	int h,m,s;  //data members
}	
//time.cpp(member function declaration)
#include<iostream>
#include"Time.h"
using namespace std;
Time::Time(){
	h=0,m=0,s=0;
}
Time::Time(int hour,int minute,int second){
	h=hour,m=minute,s=second;
}
Time::Time(const time &p){
	h=p.h,m=p.m,s=p.s;
}
Time::~Time(){
	cout<<"Destructor!"<<endl;
}
void Time::SetTime(int hour,int minute,int second){
	h=hour,m=minute,s=second;
}
void Time::Time(int hour,int minute,int second){
	cout<<"TIMEIS:"<<endl;
} //仅仅写出了函数的定义部分,具体没有写清,请注意。

~Time() ——析构函数,函数形参列表为空,在程序员自己没有定义析构函数的时候,编译器会自己生成析构函数,析构函数与构造函数是一对,用来撤销构造函数创造的对象。(可以在类里面声明,类外面定义)
在创建对象时如果采用new创建,还需要用delete删除,而new是在构造函数里面new的,所以删除的时候要调用析构函数。如:
Time *p=new myTime; delete p;

❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤
这一部分先写到这里啦~~~~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值