虚函数

来源:互联网 发布:淘宝货源数据包 编辑:程序博客网 时间:2024/06/04 18:53
虚函数
(1)在声明函数时,在最前加上virtual,则该函数就是函虚数,基类的虚函数被派生类继承后仍是虚函数。
(2)派生类中可以重写基类的虚函数。
(3)用指针访问重写的虚函数时,被访问的虚函数是指针指向的对象所属类的函数。而用指针访问重写的普通函数时,被访问的函数是指针类型所属类的函数(引用和指针相同)

(4)虚函数可以实现动态关联


例如:

//Base.h
class Base
{
public:
void show1();
vritual void show2();
};
//Base.cpp
void Base::show1() {......}
void Base::show2() {......}


//Child.h
class Child: public Base
{
public:
char x;
void show1( );
virtual void show2();
};
//Child.cpp
void Child::show1(){......}
void Child::show2(){......}


int main()
{
Child child;
Base *p_base=&child;
p_base->show1();// Base
p_base->show2();// Child
Base &r_base = child;
r_base.show1();// Base
r_base.show2();// Child
return 0;
}