抽象类需要注意:
(1)由于抽象类必须含有一个或多个没有定义功能的纯虚函数才叫抽象类,因此抽象类只能用作其
他类的基类,不能建立抽象类对象。比如class zll,若zll为抽象类,你就不能在主函数出现这种:
zll A;
(2)抽象类不能用作参数类型,函数返回类型或显式转换的类型。但可以声明指向抽象类的指针变量,此指针可以指向它的派生类,从而实现多态性。
(3)如果在抽象类的派生类中没有重新说明纯虚函数,则该函数在派生类中仍然为纯
虚函数,而这个派生类仍然还是一个抽象类。
以下为举例:
内容
用抽象类,求a^2、a^3、a^4"
定义抽象类base,包括純虚函数disp(),pa1、pa2、pa3是类base的公有派生类,分别实现函数disp() ,完成a^2、a^3、a^4"结果的输出。
描述
在此处编写题目描述信息
点击编辑器菜单栏按钮 {;} 添加示例代码
输入输出示例
在此处提供一个符合格式描述的例子, 对于自动评阅题, 您也可以选择直接在测试用例中提供
输入 | 输出 | |
示例 1 | | |
#include<iostream>
#include<cmath>
using namespace std;
class Base{
protected:
int a,n;
public:
void sett(int a1,int n1){
a=a1;
n=n1;
}
virtual void disp()=0;
//Base();
};
class pa1:public Base{
public:
void disp(){
cout<<pow(a,2)<<endl;
}
};
class pa2:public Base{
public:
void disp(){
cout<<pow(a,3)<<endl;
}
};
class pa3:public Base{
public:
void disp(){
cout<<pow(a,n)<<endl;
}
};
int main(){
int x,y;
cout<<"输入a和n的值"<<endl;
cin>>x>>y;
Base *k;
pa1 s;
s.sett(x,y);
k=&s;
k->disp();
pa2 c;
c.sett(x,y);
k=&c;
k->disp();
pa3 v;
v.sett(x,y);
k=&v;
k->disp();
return 0;
}