类中的虚函数成员

来源:互联网 发布:dota2网络延迟 编辑:程序博客网 时间:2024/05/17 22:01
本文为自己自学虚函数时总结的文章,若有误人之处,感谢批评
企鹅邮箱:3689852@qq.com



c++的虚函数有以下特点

1.虚函数只能是类中的函数,但不能使静态的成员函数
2.若基类中存在虚函数,派生类存在同名函数,则派生类会对基类虚函数重新定义,并且要保证,
  参数相同(两个参数的返回值类型,函数名,参数个数参数类型及参数个数相同)



虚函数的生命方式:

class 类名
{
virtual 函数返回值 函数名 (参数列表)
};

案例:

class A
{
public:
virtual void fun() { cout << "类A的函数被执行了" << endl;}
private:
};

class B : public A
{
public:
void fun() { cout << "类b的函数被执行了" << endl; }
private:
};

int main()
{
B b;
A *p=&b;
p->fun();
    return 0;
}


总结:

A中声明一个函数 B中声明一个函数 
若函数都不是虚函数(不加virtual)时,
A的指针实例化 调用A的函数
B的指针实例化 调用B的函数

若 A函数改为虚函数  在B类中重新定义虚函数时 virtual可以不出现
则 在虚函数列表中 B的函数会覆盖A的函数
无论是A的指针 还是B的指针 都会调用B中的函数

这就是虚函数,
可以理解为虚函数是可以被覆盖的函数
0 0