class XA{ int x; public: XA(int n) {x=n;}
};
class XB: public XA{
int y;
public: XB(int a,int b);
};
在构造函数XB的下列定义中,正确的是(B)。 A.XB::XB(int a,int b):x(a),y(b){ } B.XB::XB(int a,int b):XA(a),y(b) { } C.XB::XB(int a,int b):x(a),XB(b){ } D.XB::XB(int a,int b):XA(a),XB(b){ } 3.10有如下程序: #include
void fun1( ) const {cout<<”fun1”;} protected:
void fun2( ) const {cout<<”fun2”;}
public: void fun3( ) const {cout<<”fun3”;}
};
class Derived : protected Base{ public: void fun4( ) const {cout<<”fun4”;} };
int main(){ Derived obj; obj.fun1( ); //① obj.fun2( ); //② obj.fun3( ); //③ obj.fun4( ); //④
}
其中没有语法错误的语句是(D )。
A.①
B.②
C.③
4.写出程序运行结果 4.l#include
D.④
};
B1(int i){ ~B1( ){
cout<<”constructing B1 “<
class B2 { public: };
class C:public B2, virtual public B1 { int j; public:
C(int a,int b,int c):B1(a),memberB1(b) ,j(c){} B2( ){ cout<<”constructing B3 *”< cout<<”destructing B3”< private: }; int main( ){ } constructing B1 1 constructing B3 * constructing B1 2 constructing B3 * destructing B3 destructing B1 destructing B3 destructing B1 4.2#include class D:public B{ public: }; void f(B& rb){ } int main( ){ D d; B b,&rb1=b,&rb2=d; rb.f1(); void f1(){cout<<\void f1(){cout<<\C obj(1,2,3); B1 memberB1; B2 memberB2; } f(rb1); return 0; f(rb2); B::f1 B::f1 5.编程题 5.1定义一个Point类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area()。 #include Point(double x=0, double y=0) {X=x;Y=y;} void ShowPoint() {cout<<\ private: }; class Rectangle: public Point { public: Rectangle(double w,double h,double x,double y):Point(x,y) {width=w,height=h;Area();} void Area() {area= width*height;} void ShowArea(){ } cout<<\double X,Y; private: }; class Circle: public Point { public: Circle(double r,double x, double y):Point(x,y) {radius=r;Area();} void Area() {area= PI*radius*radius;} void ShowArea(){ } cout<<\double width,height,area; private: }; int main(){ Rectangle r(10,8,0,0); Circle c(4,3,5); r.ShowArea(); c.ShowArea(); double radius,area; } return 0; 5.2设计一个建筑物类Building,由它派生出教学楼Teach-Building和宿舍楼类Dorm-Building,前者包括教学楼编号、层数、教室数、总面积等基本信息,后者包括宿舍楼编号、层数、宿舍数、总面积和容纳学生总人数等基本信息。 #include Building(char *); void ShowBuilding(){ } cout< protected: }; Building::Building(char *name){ }; class Teach_Building: public Building { public: Teach_Building(char *,int,int,int,int); void ShowTeach_Building(){ } Building::ShowBuilding(); cout<<\cout<<\ cout<<\cout<<\strcpy(Name,name); char Name[30]; protected: }; Teach_Building::Teach_Building(char *name,int no,int fl,int cr,int ar):Building(name){ } class Dorm_Building:public Building { public: Dorm_Building(char *,int,int,int,int,int); void ShowDorm_Building(){ Building::ShowBuilding(); cout<<\cout<<\ No=no;Floors=fl;ClassRooms=cr;Area=ar; int No,Floors,ClassRooms,Area; } cout<<\cout<<\ cout<<\ protected: }; Dorm_Building:: Dorm_Building(char *name,int no,int fl,int dr,int ar,int sn):Building(name){ } int main(){ } 5.3定义并描述一个Table类和一个Circle类,由它们共同派生出RoundTable类。 (这题做得不太满意) #include Table(int legs){ } Legs=legs; Teach_Building tb(\主教学楼\Dorm_Building db(\北苑男生宿舍\tb.ShowTeach_Building(); db.ShowDorm_Building(); return 0; No=no;Floors=fl;DormRooms=dr;Area=ar;StudentNum=sn; int No,Floors,DormRooms,Area,StudentNum; protected: }; class Circle{ public: Circle(int radius){ } Radius=radius; int Legs; protected: }; class RoundTable:public Table,public Circle{ public: RoundTable(int legs,int radius):Table(legs),Circle(radius){} int Radius; protected: };