为什么静态指针返回功能中存在“静态”键盘?

时间:2017-05-12 16:56:59

标签: c++

我很难理解为什么只有标题中的keyworad“static”(我理解该代码的作用以及如何在API中使用它

//Header
class A 
{
    static A * create();
    bool init();

};


A* A::create()
{
    A * ob = new (std::nothrow) A();
    if(A && a->init()){
        A->autorealease();
        return A;
    }
    SAFE_DELETE(A);
    return nullptr;
}

像这样使用A* testobj = A::create();(如果它没有保存在某些(矢量)数组中,它将超出范围,因此引擎将清除它。)

谢谢。

1 个答案:

答案 0 :(得分:4)

  

我要问使用static指针的原因而不仅仅是返回指针

成员函数是静态的,但它返回的指针不是。函数创建的对象是动态分配的,应该以删除其他对象的方式删除。

成员函数标记为static的原因是让你在不创建对象实例的情况下运行它,即

A* myObj = A::create();

而不是

A obj;
A* objPtr = obj.create();

首先违背了定义工厂功能的目的。

关键字static在成员函数根据C ++语法定义时不会重复:编译器已经从声明中知道A::createstatic,所以没有需要重复这些信息。