C++中的virtual

几个概念

  • 虚函数:impure virtual
  • 纯虚函数:pure virtual
  • 抽象类:包含纯虚函数的类称为“抽象类”;抽象类不能使用new出对象,只有实现了这个纯虚函数的子类才能new出对象。
  • 虚继承:在继承定义中包含了virtual关键字的继承关系;
  • 虚基类:在虚继承体系中的通过virtual继承而来的基类,需要注意的是:
    struct CSubClass : public virtual CBase {};
    其中CBase称之为CSubClass的虚基类,而不是说CBase就是个虚基类,因为CBase还可以不不是虚继承体系中的基类。
  • 只包含虚函数的类不是抽象类,更不是虚基类。

举例

1
2
3
4
5
6
7
8
9
class A
{
public:
virtual void out1(string s)=0; //纯虚函数
virtual void out2(string s) //虚函数
{
cout<<"A(out2):"<<s<<endl;
}
};