我正在处理其他人编写的一些代码,我不确定他们方法的效率。它们有一个模板类,它使用范围分辨率来访问类的成员,而不是指向templatised类并以这种方式访问它。例如:
template <typename T>
class A {
void func() {
T::DoSomething();
}
};
class B {
static void DoSomething() {
// code...
}
};
我个人认为它使模板类难以理解,但我的主要查询领域是性能。哪个更有效率;使用范围解析,或拥有私有成员变量A::T* p_blah
并使用B
调用p_blah->DoSomething()
的函数?
答案 0 :(得分:2)
范围解析完全在编译时发生。该代码中使用的方法产生直接的,可嵌入的函数调用。你无法真正击败它。
您的提案:
A
(增加其大小)或全局(总是有问题的)中简而言之,它几乎没有机会像你现在那样有效率。