C++ 为什么会有一个;“静态”;静态指针返回函数中的键盘?
我很难理解为什么只在头中有一个keyworad“static”(我理解该代码的作用以及如何在API中使用它)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();
//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函数声明中的dstatic
-它说这个函数不需要类实例来调用它。如果我写错了,我深表歉意。但是我想问一下使用“static”指针而不是仅仅返回指针的原因。没有“static指针”,它是静态的函数。@NeilButterworth-谢谢你的解释,现在我明白了。也许值得补充的是,在类定义之外使用的static
具有完全不同的含义(内部链接)。