本文主要是介绍纯虚函数及抽象类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、 纯虚函数
纯虚函数是一个在基类中声明的虚函数,它在该基类中没有定义,要求任何派生类都必须定义自己的版本。
一般格式如下:
class <类名>
{
virtual <类型><函数名>(<参数表>)=0;
…
};
注意:
1、 纯虚函数没有函数体;
2、 最后面的“=0”并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”;
3、 这是一个声明语句,最后应有分号。
4、如果在一个类中声明了纯虚函数,而在其派生类中没有对该函数定义,则该虚函数在派生类中仍然为纯虚函数。
二、抽象类
至少带有一个纯虚函数的类称为抽象类(abstract class)。抽象类只能用作其他类的基类,抽象类不能建立对象。抽象类不能用作参数类型、函数返回类型或显示转换的类型,但可以声明抽象类的指针和引用。
例如:
class point
{
....
};
class shape
{
point center;
....
public:
point where()
{
return center;
}
void move(point p)
{
center=p;
draw();
}
virtual void totate(int)=0; //纯虚函数的定义
virtual void draw()=0; //纯虚函数的定义
};
shape x; //错误:抽象类不能建立抽象
shape *p; //可以声明抽象类的指针
shape f(); //错误:抽象类不能作为返回类型
void g(shape); //错误:抽象类不能作为参数类型
shape &h(shape&); //可以声明抽象类的引用
这篇关于纯虚函数及抽象类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!