簡體   English   中英

模板類中靜態函數或指針的范圍分辨率

[英]Scope Resolution to a Static Function or a Pointer in Template Class

我正在研究其他人編寫的一些代碼,我不確定他們方法的效率。 它們有一個模板類,它使用范圍分辨率來訪問類的成員,而不是指向templatised類並以這種方式訪問​​它。 例如:

template <typename T>
class A {
    void func() {
        T::DoSomething();
    }
};

class B {
    static void DoSomething() {
        // code...
    }
};

我個人認為它使模板類難以理解,但我的主要查詢領域是性能。 哪個更有效率; 使用范圍解析,或具有私有成員變量A::T* p_blah並使用p_blah->DoSomething()調用B的函數?

范圍解析完全在編譯時發生。 該代碼中使用的方法產生直接的,可嵌入的函數調用。 你無法真正擊敗它。

你的建議:

  • 需要以某種方式創建B的實例
  • 要求指向該實例的指針存儲在A (增加其大小)或全局(總是有問題的)中
  • 介紹了跟蹤該實例的生命周期的需求

簡而言之,它幾乎沒有機會像你現在擁有的那樣高效。

暫無
暫無

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

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