从静态指针调用函数到类中的另一个类

时间:2014-10-14 11:18:53

标签: c++ class oop object function-pointers

我在理解下面的代码时遇到了问题。我使用Google进行搜索,但找不到答案。

class B
{
    //constructor etc
    //...some stuff
    virtual myinit();
    virtual doStuff();
};


class A : public B
{   
    //constructor etc
    //...some stuff

    static B * Create()
    {
        A* demo = new A;
        demo->myinit();
        demo->doStuff();
        return demo;
    }
};

我知道当我创建A时,也会创建B。但为什么Create()会返回指向类型B的指针?

此方法是自动调用的吗?另外,为什么这样static? 我知道什么是多态和静态意味着..

3 个答案:

答案 0 :(得分:0)

静态方法意味着此方法存在于每个类而不是每个对象 - 因此它绑定到类。静态方法Create()是众所周知的模式(Factory Pattern)。

在此方法中,创建指向A的对象,调用并返回方法。

答案 1 :(得分:0)

这些问题涉及C ++的基本概念

1-多态性 2-非成员变量的静态语义。

对于多态,我建议你阅读这里的介绍(http://www.cplusplus.com/doc/tutorial/polymorphism/

对于static,您必须知道可以在不实例化类的情况下使用静态成员函数。

答案 2 :(得分:0)

why does Create() return a pointer to a type B?

您可以安全地将派生类的指针转换为其基类的指针。

为什么函数执行此操作,您需要询问编写它的人。

Is this method called automatically?

没有

why is it static in this way?

这样你就可以在没有类对象的情况下调用函数。如果尚未存在A并且“创建”不是静态的,那么您将无法使用“创建”功能创建任何A。