C/C++教程

编程设计模式(C++)(1)

本文主要是介绍编程设计模式(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)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!