(结构化程序设计):程序=数据结构+算法;程序由全局变量以及众多相互调用的函数组成。算法以函数的形式出现,用于对数据结构的操作。
结构化程序设计中,函数和其所操作的数据机构没有直观联系。函数难以复用。随程序规模增加程序逐渐难以理解,难以理解难以扩充。
C++(面向对象程序设计)面向对象程序=类+类+...+类
将某类卡关事物的属性归纳出来,形成一个数据结构(可以用多个变量描述事物的属性)
抽象:将这类事物所能进行的行为也归纳出来,形成一个个函数,这些函数可以用来操作数据结构。
封装:将数据结构和操作该数据的函数”捆绑“在一起,形成一个“类”。从而使操作改数据结构的函数算法呈现出显而易见的紧密关系,这就是封装。
面向对象程序设计的基本特点:“抽象”、“封装”、“继承”、“多态”
和结构变量一样,对象所占用的内存空间的大小,等于所有成员变量的大小之和。
每个对象各有自己的存储空间。一个对象的某个成员变量被改变了,不会影响到另一个对象。
使用类的成员变量和成员函数法1:对象名.成员名
CRectangle r1,r2; r1.w=5; r1.Init(5,4);
法2:指针->成员名
CRectangle r1,r2; CRectangle* p1=&r1; CRectangle* p2=&r2; p1->w=5; p2->Init(5,4);//Init作用在p2指向的对象上
法3:引用名.成员名
CRectangle r2; CRectangle & rr=r2; rr.w=5; rr.Init(5,4);//rr的值变量,r2的值也变类的成员函数和类的定义分开写
class CRectangle
{
public:
int w,h;
int Area();//成员函数仅在此处声明2
int Perimeter();
void Init(int w_,int h_);
}
//具体函数放在类之外写
int CRectangle::Area()
{
return w*h;
}
类的成员函数一定要通过对象或对象的指针或对象的引用才能调用
类成员的可访问范围private:私有成员,只能在成员函数内访问
public:公有成员,可在任何地方访问
protected:保护成员
如果某个成员前面没有关键字,则缺省地被认为是私有成员。在类的成员函数内部,能够访问:1.当前对象的全部属性、函数;2.同类其他对象的全部属性、函数
class CEmployee{
private:
char szName[30];
public:
int salary;
void setName(char* name);
void getName(char* name);
void averageSalary(CEmployee e1,CEmployee e2);
};
void CEmployee::setName(char* name){
strcpy(szName,name);//ok
}
void CEmployee::getName(char* name){
strcpy(name,szName);//ok
}
void CEmployee::averageSalary(CEmployee e1,CEmployee e2){
cout< 在类外,对私有成员变量的访问都是通过成员函数进行访问,不能随便访问。
成员函数的重载及参数缺省
#include
using namespace std;
class Location{
private:
int x,y;
public:
void init(int x=0,int y=0);
void valueX(int val){x=val;}
int valueX(){return x;}
};
int main(){
Location A,B;
A.init(5);//相当于A.init(5,0)
A.valueX(5);
cout<
使用缺省参数需要避免函数重载的二义性,会导致错误。



