现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

虚函数与纯虚函数的用法

2012-11-25 08:57 工业·编程 ⁄ 共 869字 ⁄ 字号 暂无评论

虚函数与纯虚函数的相同点:

   1.都可以在子类中重载,以多态的形式被调用。

   2.通常都存在于抽象基类中,被继承的子类重载,目的是提供一个统一的接口。

   3.都不能使用static标示符(原因:虚函数是动态绑定的)

虚函数与纯虚函数的不同点:

   1.虚函数为了重载和多态的需要,已在类中被定义(即便定义为空),所以在子类中可以重写其功能,也可以不用改写。

     纯虚函数仅仅在类中被声明,其定义必须在子类中实现。

   2.虚函数可以被直接调用,也可以被子类重载以后以多态的形式调用。

     纯虚函数必须在子类中实现该函数才可以使用(原因:纯虚函数在类中仅是一个声明)

   3.虚函数的声明:virtual 函数名( )

                 {

                     body;

                 }

     纯虚函数的声明:virtual 函数名( ) = 0;

   4.含有纯虚函数的类被称为抽象类,而只含有虚函数的类不能被称为抽象类。

   5.如果一个类中含有纯虚函数,那么对此类进行的任何实例化的语句都将导致错误(原因:抽象基类不能被直接调用)。

     以下为一个简单的虚函数和纯虚寒数的示例:

<span style="font-size:18px;">
class father
{
  public:
      virtual void test_1(){cout<<"It is a father class!";}

     &nbsp;virtual void test_2 = 0;
    
      ...
}

class son:public father
{
     void test_1(){cout << "It is a father class too!"}
    
     void test_2(){cout << "It is a sub class!"}
}

int main(void)
{
     father *test;

     test = new son;

     test -> test_1();

     test -> test_2();

     return 0;
}
  </span>

给我留言

留言无头像?