Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么会有一个;“静态”;静态指针返回函数中的键盘?_C++ - Fatal编程技术网

C++ 为什么会有一个;“静态”;静态指针返回函数中的键盘?

C++ 为什么会有一个;“静态”;静态指针返回函数中的键盘?,c++,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();

我很难理解为什么只在头中有一个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();
(如果它没有保存在某个(向量)数组中,它将超出范围,因此引擎将清理它)

多谢各位

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

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

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

A* myObj = A::create();
相对于

A obj;
A* objPtr = obj.create();
它首先违背了定义工厂函数的目的


关键字<代码> static 不在成员函数按照C++语法定义的时候重复:编译器已经从声明中知道,<代码>::创建< /C> >是代码>静态< /代码>,所以不必重复这些信息。

我不明白你的问题……你到底问什么?你只有NEE函数声明中的d
static
-它说这个函数不需要类实例来调用它。如果我写错了,我深表歉意。但是我想问一下使用“static”指针而不是仅仅返回指针的原因。没有“static指针”,它是静态的函数。@NeilButterworth-谢谢你的解释,现在我明白了。也许值得补充的是,在类定义之外使用的
static
具有完全不同的含义(内部链接)。