我很难理解为什么标题中只有一个关键字“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();
(如果它没有保存在某个( vector )数组中,它将超出范围,因此它将被引擎清理)。
谢谢。
最佳答案
I am askign the reason of using
static
pointer instead of just returning pointer
成员函数是静态的,但它返回的指针不是静态的。该函数创建的对象是动态分配的,应该以与删除其他对象相同的方式删除。
成员函数被标记为static
的原因是让您无需创建对象实例即可运行它,即
A* myObj = A::create();
相对于
A obj;
A* objPtr = obj.create();
这从一开始就违背了定义工厂函数的目的。
在按照 C++ 语法定义成员函数时,关键字 static
不会重复:编译器已经从声明中知道 A::create
是 static
,因此无需重复此信息。
关于c++ - 为什么静态指针返回函数中有 "static"关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942913/