C/C++技巧
+ -

C/C++技巧 类静态函数实例封装

2023-06-06 21 0

使用C++开发项目时,多态,继随给我们的项目开发提供了方便简洁。
但类的实例化入口没有一个比较好的解决方法,反正就是用到那里就实例化这个派生类,但由于继承虚函数,我们在使用这个类实例时经常调用的是它的虚函数。所以对于类的实例化有必要提供一个统一的管理接口。

如有基类A,我们提供一个静态成员函数Create,根据传入的参数,提供不同的派生类实例。
获取派生类指针后,只需要简单的判断,我们就可以调用其成员虚函数了。
这样在实际项目开发过程中,只需要加入基类的头文件就可以了。

对于头文件之间的相互引用问题,我们只需要将静态成员函数的实现放到不同的.cpp文件中即可。这样只在这个cpp文件只进行实例的创建管理。

#include "stdafx.h"

class A
{
public:
    static A*  Create(int type);
virtual    void print()
    {
        printf("A::printn");
    }

};

class B : public A
{
    virtual    void print() override
    {
        printf("B::printn");
    }

};

A* A::Create(int type)
{
    if (type == 1)
    {
        printf("A::Createn");
        return new B;
    }
    else
    {    
        printf("NO CREATEn");
        return NULL;
    }

}

int _tmain(int argc, _TCHAR* argv[])
{
    A* p = A::Create(1);
    if (p != NULL)
    {
        p->print();
        delete p;
    }


    return 0;
}

输出结果:

A::Create
B::print

使用扩展

当然了,不光可以通过传入参数进行实例不同的派生类,也可以根据编译的条件宏。
如跨平台宏实现不同同的类用于跨平台的兼容,编译时的debug或自定义宏用于调试的继随类等。
其实就是说只要你想实现某个类或者功能的二意或者多意性,都可以使用这个方法。

0 篇笔记 写笔记

C/C++技巧 类静态函数实例封装
使用C++开发项目时,多态,继随给我们的项目开发提供了方便简洁。但类的实例化入口没有一个比较好的解决方法,反正就是用到那里就实例化这个派生类,但由于继承虚函数,我们在使用这个类实例时经常调用的是它的虚函数。所以对于类的实例化有必要提供一个统一的管理接口。如有基类A,我们提供一个静态成员函数Crea......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!