繁体   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