[英]Why there is a “static” keywoard in static pointer return function?
我很難理解為什么只有標題中的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();
(如果沒有保存在某些(矢量)數組中,它將超出范圍,因此它將由引擎清除)。
謝謝。
我要問使用
static
指針而不是只返回指針的原因
成員函數是靜態的,但它返回的指針不是。 函數創建的對象是動態分配的,應該以刪除其他對象的方式刪除。
成員函數標記為static
的原因是讓您在不創建對象實例的情況下運行它,即
A* myObj = A::create();
而不是
A obj;
A* objPtr = obj.create();
這首先違背了定義工廠功能的目的。
在根據C ++語法定義成員函數時,關鍵字static
不會重復:編譯器已經從聲明中知道A::create
是static
,因此不需要重復此信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.