虚函数
最编程
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();
}
补充一些关于虚函数的使用方法
#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();
}
上一篇: C++] 用红黑树封装映射和集合
下一篇: 深入了解 C++ 中的多态性