C++ 静态联编和动态联编初认识
多态性:
- 静态联编多态性(编译时的多态性)通过函数,运算符的重载实现的(系统根据形参的个数来实现编译的多态性)
- 动态联编多态性(运行时的多态性)通过继承,虚函数(当运行时才能实现对象与函数的联编)C++规定:动态联编是在虚函数的支持下实现的
条件:指向派生类对象的基类指针或者引用派生类对象的基类引用(调用虚函数)
动态联编:
1 #include <iostream> 2 using namespace std; 3 class shape{ 4 public: 5 void virtual draw(){cout<<"I am shape"<<endl;}//这里设定了draw是虚函数 6 void fun(){draw();} 7 }; 8 class circle:public shape{ 9 public: 10 void draw(){cout<<"I am circle"<<endl;}//虽然没有说明circle类中的draw是虚函数,但是circle其实继承了virtual性质 11 }; 12 void main(){ 13 circle oneshape; 14 oneshape.fun(); 15 }
若没有virtual ,程序就会输出I am circle,因为有了虚函数进行了绑定,若没有,输出为 I am shape;若要深入弄懂链表,必须学习数据结构和汇编,
其实虚函数的本质就是搞了个数据结构。也就是虚函数表
博客园的文章都是大学时写的,质量不太好。
我的新文章都会发布再新的 blog :https://blog.biyongyao.com
请大家关注哟!!