4.1.3 对象的定义与使用
对象是类的具体实例,定义好类以后必须去定义类的对象才可以真正实现类的功能。一般情况下对象的定义有下面两种情况。
1.声明类时直接定义对象
这种形式的对象定义是指在声明类的同时,直接定义该类的对象。在声明类的右括号"}"后直接列出对象名,并且可以定义多个对象。对象之间用","隔开,并且在最后一个对象的后边添加一个";"。
【示例4.6】 声明类的同时直接定义对象。
- class point
- {
- private:
- int x;int y;
- public:
- float distance()
- {
- return sqrt(x*x+y*y);
- }
- }A,B;
分析:上面的形式首先声明一个类point,在声明中直接定义了该类的对象A和B。
2.声明类之后再定义对象
声明类以后,再定义类的对象,定义形式与一般变量定义一样。其基本形式为:
类名 对象;
当然实际中也可以同时定义类的多个对象,相邻对象之间使用","隔开,最后一个对象的后面添加一个";"。
【示例4.7】 声明类point之后,再定义该类的对象A和B。
- class point
- {
- private:
- int x;int y;
- public:
- float distance()
- {
- return sqrt(x*x+y*y);
- }
- };
- point A,B;
分析:上面首先声明了point类,声明结束之后,利用类名定义了类的对象A和B。对象的定义完成以后就可以在程序中使用该对象。无论是数据成员还是函数成员,只要其类型为公有的,在类的外部都可以通过对象进行访问。访问的形式如下:
- 对象名.数据成员
- 对象名.函数成员(实参列表)
注意:对于类的包含成员和私有成员,类的对象并不能直接访问。因此一般情况下都会利用一定的接口对类的包含成员和私有成员进行访问。
【示例4.8】 定义了类point,在声明类的时候直接定义对象。并且在主程序中利用类的对象使用类的成员变量和成员函数。
- #include"iostream.h"
- #include"math.h"
- class point
- {
- private:
- int x;int y;
- public:
- float distance()
- {
- return sqrt(x*x+y*y);
- }
- void init(int a,int b)
- {
- x=a;y=b;
- }
- }A;
- void main()
- {
- point B;
- A.init(3,4);
- B.init(6,8);
- cout<<A.distance()<<" "<<B.distance()<<endl;
- }
分析:上面的例子中增加了一个函数init(),因为其数据成员是私有的,在类外部无法访问,所以定义一个共有的成员函数对其进行访问。
说明:类中的所有成员应该都可以经过一定机制进行访问,如果不能访问类的数据成员,则定义此成员就没有任何意义。定义为保护或私有的目的是为了使之在类的外部不能被访问。
【责任编辑:
云霞 TEL:(010)68476606】