当前位置:文档之家› c++多态性与虚函数习题

c++多态性与虚函数习题

作业题
一、写出下列程序运行结果
1.#include<iostream>
using namespace std;
class A {
public:
virtual void func( ) {cout<<”func in class A”<<endl;} };
class B{
public:
virtual void func( ) {cout<<”func in class B”<<endl;} };
class C:public A,public B{
public:
void func( ) {cout<<”func in class C”<<endl:}
};
int main( ){
C c;
A& pa=c;
B& pb=c;
C& pc=c;
pa.func( );
pb.func( );
pc.func( );
}
2.#include<iostream>
using namespace std;
class A{
public:
virtual ~A( ){
cout<<”A::~A( ) called “<<endl; }
};
class B:public A{
char *buf;
public:
B(int i) { buf=new char[i]; }
virtual ~B( ){
delete []buf;
cout<<”B::~B( ) called”<<endl;
}
};
void fun(A *a) {
delete a;
}
int main( )
{ A *a=new B(10);
fun(a);
}
二、程序设计题
1有一个交通工具类vehicle,将它作为基类派生小车类car、卡车类truck和轮船类boat,定义这些类并定义一个虚函数用来显示各类信息。

5.2定义一个shape抽象类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area( )。

5.5某学校对教师每月工资的计算公式如下:固定工资+课时补贴。

教授的固定工资为5000元,每个课时补贴50元;副教授的固定工资为3000元,每个课时补贴30元;讲师的固定工资为2000元,每个课时补贴20元。

给出教师抽象类及主函数,补充编写程序求若干教师的月工资。

#include<iostream>
using namespace std;
class Teacher{
protected:
double salary;
int workhours;
public:
Teacher(int wh=0){workhours=wh;}
virtual void cal_salary()=0;
void print(){cout<<salary<<endl;}
};
int main(){
Teacher *pt;
Prof prof(200);
pt=&prof;
pt->cal_salary();
prof.print();
Vice_Prof vice_prof(250);
pt=&vice_prof;
pt->cal_salary();
vice_prof.print();
Lecture lecture(100);
pt=&lecture;
pt->cal_salary();
lecture.print ();
return 0;
}。

相关主题