gpt4 book ai didi

c++ - 为什么静态指针返回函数中有一个 "static"关键字?

转载 作者:搜寻专家 更新时间:2023-10-31 00:28:45 25 4
gpt4 key购买 nike

我越来越难以理解为什么只有标题中有一个关键字“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();

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

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

关于c++ - 为什么静态指针返回函数中有一个 "static"关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com