为什么静态指针返回函数中有一个"静态"键?

Why there is a "static" keywoard in static pointer return function?

本文关键字:静态 有一个 函数 指针 返回 为什么      更新时间:2023-10-16

>我很难理解为什么仅在标头中有一个keyworad"静态"(我了解该代码的作用以及如何在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();(如果它没有保存在某个(矢量(数组中,它将超出范围,因此它将被引擎清理(。

谢谢。

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

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

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

A* myObj = A::create();

而不是

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

这首先违背了定义工厂函数的目的。

在根据语法

定义成员函数时,关键字 static 不会重复C++:编译器已经从声明中知道A::createstatic的,因此无需重复此信息。

相关文章: