1、定义
- 面向对象的基本特点:抽象、封装、继承、多态
- 面向对象程序设计方法:将某类客观事物的共同特点归纳出来,形成一个数据结构
- 抽象:将事物所能进行的行为归纳出来,形成一个个函数,这些函数可以用来操作数据结构
- 通过某种语法,将数据结构和操作该数据结构的函数捆绑在一起,形成一个类
- 封装:使得数据结构和操作该数据结构的算法呈现出显而易见的紧密关系
2、实例:编写程序,输入长和宽 计算面积和周长
- 三个行为:设置长宽、计算面积、计算周长
- 三个函数封装在一起,形成一个矩形类
- 长、宽成为矩形类的成员变量,三个函数称为成员函数。成员变量和成员函数称为类的成员
- 待解决问题:class和struct的关系和区别
class CRectangle//这里的class可以用struct代替
{
public:
int w,h;
int a()
{
return w*h;
}
int p()
{
return 2*(w+h);
}
void init(int w1, int h1)
{
w=w1;h=h1;
}
};//最后要有分号
int main()
{
int w,h;cin>>w>>h;
CRectangle r;
r.init(w,h);
cout<<r.a()<<"\t"<<r.p()<<endl;
return 0;
}
3、对象的内存分配
- 和结构变量一样,对象占用内存大小等于所有成员变量大小之和
- 成员函数只占用一份存储空间,被所有对象共享,不会放入对象里面,对象只包含成员变量,不包含成员函数
4、对象间的运算
- 对象仅可以使用“=”进行赋值,不可以使用比较运算,除非重载
5、使用类的成员变量和成员函数
- 法1:对象名.成员名
e.g.Crectangle r1,r2;r1.w=5;r2.init(5,4);
- 法2:指针->成员名
e.g.
Crectangle r1,r2;
Crectangle *p1=&r1;Crectangle *p2=&r2;
p1->w=5;
p2->init(5,4);
Crectangle r2;
Crectangle &rr=r2;
rr.y=5;
rr.init(5,4);