[说明]
下面程序定义了一个类Point及其成员函数,然后从类Point派生出类Circle及其成员函数。
[C++程序]
//POINT. H
#ifndef POINT_H
# define POINT_H
class Point
public:
Point (float x=0,float y=0) ;
void setPoint (float, float) ;
float getX () const return x;
float getY () const return y;
protected:
float :x,y;
;
#endif
//POINT.CPP
#include <iostream.h>
#include " point .h "
Point :: Point (float a, float b)
x=a; y=b
void Point::setPoint(float a,float b)
x=a; y=b
//CIRCLE . H
#ifndef CIRCLE_H
#define CIRCLE_H
#include "point.h"
class Circle: (1)
public :
Circle (float r=0.0, float x=0, float y=0) ;
void setRadius (float) ;
float getRadius () const;
float area() const;
protected:
float radius;
;
//CIRCLE.CPP
#include "iostream.h"
#include "circle .h "
Circle::Circle(float r,float a,float b)
: (2)
radius=r;
void Circle::setRadius (float r)
radius=r;
float Circle::getRadius () const
return radius;
float Circle::area () const
return 3 .14159*radius*radius ;
//text.cpp
#include <iostream.h>
#include " point .h "
#include " circle .h "
main ()
Circle c(2.5,3.7,4.3) ;
cout<< "X coordinate is "<<c.getX ()
<<\n Radius is: "<<c.getRadius ();
(3) ; //设置新的圆心 (2,2) 。
Point &pRef=c;
cout<<"\n Circle printed as a point is:"
<<"]"<< (4) <<"."<< (5) <<"]";
参考答案:pRef.getY()
解析: 本题以C++语言为载体,考查面向对象程序设计中的几个重要概念——派生类型,构造函数,以及对象的引用。
首先,根据主函数中的c.getX()调用,我们可以判断类Circle对类Point的继承为公有继承,空(1)处应填入public Pointo空(2)处考查的是构造函数的初始化,在派生类的构造函数中可以调用基类的构造函数,应填入Point(a,b)。在空(3)处我们根据题目给出的说明,要求重新设置圆心为(2,2),可以调用基类设置点的函数setPoint,所以空(3)处应填入c.setPoint(2,2)。最后考察的是对象的引用,派生类对象可以初始化基类引用,在这种情况下,只能访问从相应基类中继承来的成员,而不允许访问从其他基类的成员或在派生类中增加的成员,所以,空(4)、空(5)处应分别填入pRef.getX()和pRef.getY()。