我很难理解为什么只有标题中的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();
(如果它没有保存在某些(矢量)数组中,它将超出范围,因此引擎将清除它。)
谢谢。
答案 0 :(得分:4)
我要问使用
static
指针的原因而不仅仅是返回指针
成员函数是静态的,但它返回的指针不是。函数创建的对象是动态分配的,应该以删除其他对象的方式删除。
成员函数标记为static
的原因是让你在不创建对象实例的情况下运行它,即
A* myObj = A::create();
而不是
A obj;
A* objPtr = obj.create();
首先违背了定义工厂功能的目的。
关键字static
在成员函数根据C ++语法定义时不会重复:编译器已经从声明中知道A::create
是static
,所以没有需要重复这些信息。