首先说一下面向程序开发的特点:
自上而下,逐步求精;重点是如何实现细节过程,将数据与函数分开
大致形式是:主模块 +若干小模块, 最大的缺点是程序的效率低,可重复性差。
面向对象的程序开发:实现软件设计的产业化,自然界是由实体对象所组成,通过对自然界的事物进行高度概括分类,和抽象,使用面向对象的观点来模拟自然界实体事物来解决问题。
数据抽象:描述对象的属性或者状态(forexample:int second;int minute;int hour;)
代码抽象:描述对象的行为特征或者功能(Forexample:SetTime();ShowTime();)
抽象的实现:通过类的声明
class clock{
public:
void SetTime(int NewH,int NewM,int NewS);
void ShowTime();
private:int Hour;
int Minute;
int Second;
};
封装:将抽象的数据代码放在一起使他们成为一个整体,目的是为了增强安全性和简化编程,是使用者不比了解实现细节。
类的派生与继承,多态。(后续。。。)
类的声明形式:
class 类名{
public:共有成员(一些外部接口的实现)
private:私有成员
protected:保护成员};
//如果紧跟在类名后声明是由成员,者private可与省略。
成员数据:与一般的变量声明相同,但是需要放到类内
成员函数:在类中说明原形,可以在类内实现,也可以在类外实现;允许声明成员函数和省略参形参值的函数;
构造函数:将对象初始为一个特定的状态
在创建对象时系统自动调用
如果程序中未声明,系统自动产生一个缺省形式的构造函数
拷贝构造函数:一种特殊的构造函数,其形参为本类对象的引用
#include<iostream>
using namespace std;
class 类名{
public:类名(形参)//构造函数
类名(类名 &对象名);//拷贝构造函数
};
类名::类名(类名 &对象名)
{函数体}//拷贝构造函数的实现
拷贝构造函数被调用的三种情况:
1,当用一个对象去初始化类的另一个对象
point A(B);
2,函数的形参为类的对象
3,函数的返回值为类的对象