C++,利用虚函数

来源:百度知道 编辑:UC知道 时间:2024/05/24 14:47:07
利用虚函数设计一个程序,分别求250角的sin, cos, tang函数值并
输出。
提示:
(a)三角数学函数转换成弧度方法:10=3.1415926/180 弧度
250角要转换成弧度制:250=25*3.1415926/180 弧度
可以定义符号常量 hd25:const double hd25=25*3.1415926/180;
(b)本问题要求建立4个类,1个基类3个派生类,类名自定。
(c)定义基类名为:shape,有一个保护数据成员hd
基类shape有一个参数的构造函数,初始化保护数据成员hd
shape(double p) { hd=p; }
定义基类虚函数 area():virtual double area(){ return 0; }
(d)定义派生类 Fsin
定义派生类 Fsin构造函数,给基类shape构造函数传递参数
Fsin(double p):shape(p)
派生类 Fsin中重定义基类的虚函数 area(),返回sin(hd)的值
double area(){ return sin( hd );}
同样分别定义派生类 Fcos、 Ftang
定义派生类 Fcos或Ftang构造函数,给基类shape构造函数传递参数
派生类 Fcos或Ftang中重定义基类的虚函数 area(),
返回cos(hd) 的值: double area(){ return cos( hd ); }
或返回tan(hd)的值: double area(){ return tan( hd ); }
(e)主函数内
定义基类指计 p(作为公共接口)
创建派生类 Fsin对象osin以常量hd25初始化 hd
基类指计 p 指向派生类 Fsin对象osin
用基类指计 p调用派生类 Fsin的虚函数 area()输出sin值
void main()
{
shape *p;

#include <iostream>
#include <cmath>
using namespace std;
const double hd25=25*3.1415926/180;
class shape{
protected:
double hd;
public:
shape(double p){hd=p;}
virtual double area(){return 0;}
};
class Fsin:public shape{
public:
Fsin(double p):shape(p){}
double area(){return sin(hd);}
};
class Fcos:public shape{
public:
Fcos(double p):shape(p){}
double area(){return cos(hd);}
};
class Ftang:public shape{
public:
Ftang(double p):shape(p){}
double area(){return tan(hd);}
};
void main(){
shape *p;
Fsin osin(hd25);
p=&osin;
cout<<"sin值为:"<<p->area()<<endl;
Fcos ocos(hd25);
p=&ocos;
cout<<"cos值为:"<<p->area()<<endl;
Ftang otan(hd25);
p=&otan;
cout<<"tan值为:"<<p->area()<<endl;
}
这样写