为什么静态指针返回函数中有一个"静态"键?
Why there is a "static" keywoard in static pointer return function?
>我很难理解为什么仅在标头中有一个keyworad"静态"(我了解该代码的作用以及如何在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++:编译器已经从声明中知道A::create
是static
的,因此无需重复此信息。
相关文章:
- 有一个打印语句的函数是一种糟糕的编程实践吗
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 打印一个带有静态 int 的函数,有一个 std::cout 和多个 std::cout 有什么区别?
- 我可以有一个从外部不可见但未在标头中定义的静态友元函数吗?
- 为什么有一个额外的 & 将非静态成员函数的地址传递给 C++ 中的线程?
- 为什么静态指针返回函数中有一个"静态"键?
- 长镜头 -- 可能有一个静态类成员,该类成员具有访问非静态成员的 lambda
- 一个类本身有一个静态成员的功能是什么?
- 如果我在一个类中有一个静态属性,并创建该类的许多新实例
- 我可以有一个异常的静态全局实例吗?
- 是否有一个模板可以生成类的静态/动态绑定版本
- 如果一个类不是直接从main中使用的,但有一个静态私有成员,那么在编译和链接时,可以使用最大优化来忽略它吗
- 我可以有一个指向C++中函数的静态指针数组吗
- 有一个指向此的静态指针会产生什么后果
- 可以有一个C++GUI静态库吗?但不是.dll
- 如果多个类有一个共同的静态变量,它们是共享的吗(在同一个作用域内?)
- 我们可以有一个虚拟静态方法吗?(c++)
- 编译一个静态二进制代码,其中有一个函数gethostbyname
- 有一个dll项目,我可以强制它链接到静态库吗?