编程设计模式(C++)(1)
2021/10/18 11:09:25
本文主要是介绍编程设计模式(C++)(1),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
模式设计原则:扩展隔离变化点,抽象稳定点
大部分的设计模式都依赖于多态,要实现多态则需要用到虚函数;
虚函数分为一般虚函数和纯虚函数,一般虚函数调用是可以运行函数体中的代码的,纯虚函数的代码定义如下:
virtual void f()=0;
如下代码
#include<iostream> using namespace std; class A { public: void print1() { cout << "A" << endl;; } virtual void print2() { cout << "A" << endl; } }; class B :public A{ public: void print1() { cout << "B" << endl; } virtual void print2() { cout << "B" << endl; } }; int main() { A*p; A*test1= new A(); B*test2 = new B(); p = test1; p->print1(); p->print2(); p = test2; p->print1(); p->print2(); system("pause"); return 0; }View Code
代码的输出结果如下
很显然,当p指向testB指向的对象时调用print1()方法时,所执行的为类A的print1方法,因为指针p在声明时就将print1方法名和类A中的print1方法进行了静态绑定。
静态绑定:在程序编译时就能将函数名和具体函数绑定
动态绑定:在程序编译时不能确定到具体的函数,因为虚函数的特性,需要在运行时才能确定具体调用哪个对象的函数。
当类被初始化时,类中的虚函数会被记录到一个虚函数表中,在多态中,当一个指针指向另一个类的对象时,虚函数表则会通过指向的这个类进行更新,在调用虚函数时就会调用指向的这个对象中的具体函数体。基类和派生类会共用一张虚函数表。
。。。
这篇关于编程设计模式(C++)(1)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04el-table 开启定时器下,表格的选中状态会消失是什么原因-icode9专业技术文章分享
- 2024-10-03如何安装和初始化飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03如何安装 App 并连接到飞牛 NAS?-icode9专业技术文章分享
- 2024-10-03如何安装飞牛 TV 并连接到影视服务器?-icode9专业技术文章分享
- 2024-10-03如何在PVE和ESXI上安装飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS安装系统异常情况处理-icode9专业技术文章分享
- 2024-10-03飞牛NAS如何创建存储空间?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS硬盘会自动休眠吗?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何安装飞牛影视和创建媒体库?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何为家人朋友开通影视账号?-icode9专业技术文章分享