欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

虚函数

最编程 2024-04-14 10:49:59
...
武汉源创会回归,4月20聊聊大模型”

虚函数2

补充一些关于虚函数的使用方法

#include <iostream>
using namespace std;
class A
{
public:
    virtual void show(){ cout << "A类" << endl; }
};
class B :public A
{
public:
    void print();
};
class C :public B
{
public:
    void show(){ cout << "C类" << endl; }
};
void main()
{
    A *a;
    B b;
    a = &b;
    a->show();
    C c;
    a = &c;
    a->show();
}

  • 可见,A中的show()虽然是虚函数,但是用B的对象的地址赋值的A类的指针,还是访问到了A类对象的show()函数。

  • 而且,C类中的show()函数虽然没有明确说明是虚函数,但是从动态联编的角度来看,C中的show()仍然是一个虚函数。(B中有没有show()对C没有影响)

  • 只要最基类的函数中有虚函数,往下的派生只要出现该函数都会是虚函数,都会发生动态联编(联编的原理还需要继续深入研究)

  • 如果把代码改:

#include <iostream>
using namespace std;
class A
{
public:
    virtual void show(){ cout << "A类" << endl; }
};
class B :public A
{
public:
    void show(){ cout << "B类" << endl; }
    void print();
};
class C :public B
{
public:
    void show(){ cout << "C类" << endl; }
};
void main()
{
    A *a;
    B b;
    a = &b;
    a->show();
    C c;
    a = &c;
    a->show();
}