簡體   English   中英

為什么靜態指針返回功能中存在“靜態”鍵盤?

[英]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::createstatic ,因此不需要重復此信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM