虚函数和抽家类
虚函数和抽象类
士主要内容 虚函数的使用 ■抽象类的概念和定义 n纯虚函数的使用
◼ 虚函数的使用 ◼ 抽象类的概念和定义 ◼ 纯虚函数的使用 主要内容
虚函数的使用 虚函数是动态联编的基础。 是非静态的成员函数。 在类的定义中,在函数原型之前写 virtual virtual只用来说明类定义中的原型,不能用在函数实 现时。 具有继承性,基类中定义了虚函数,派生类中无论是 否说明,同原型函数都自动为虚函数 本质:不是重载定义而是覆盖定义。 调用方式:通过基类指针或引用,执行时会 根据指针指向的对象的类,决定调用哪个函数
◼ 虚函数是动态联编的基础。 ◼ 是非静态的成员函数。 ◼ 在类的定义中,在函数原型之前写virtual。 ◼ virtual 只用来说明类定义中的原型,不能用在函数实 现时。 ◼ 具有继承性,基类中定义了虚函数,派生类中无论是 否说明,同原型函数都自动为虚函数。 ◼ 本质:不是重载定义而是覆盖定义。 ◼ 调用方式:通过基类指针或引用,执行时会 根据指针指向的对象的类,决定调用哪个函数。 虚函数的使用
士写出运行结果 #include iostream. h> class bo∥类声明 public:∥外部接口 virtual void display)∥虚成员函数 scout<<B0: display"<<endl;
写出运行结果 #include <iostream.h> class B0 //基类声明 { public: //外部接口 virtual void display() //虚成员函数 {cout<<"B0::display()"<<endl;} };
class b1: public bo∥公有派生 i public void display i cout<<Bl: display( "endl class dl: public bl∥公有派生 i public void display i cout<< DI: display"<<endl
class B1: public B0 //公有派生 { public: void display() { cout<<"B1::display()"<<endl; } }; class D1: public B1 //公有派生 { public: void display() { cout<<"D1::display()"<<endl; } };