我对C ++很陌生,所以想知道你们是否可以帮助我。
我正在浏览一段代码并在模板下面看到一个函数,如下所示:
MyClass(xyzType param1, xyzType param2)
parameter1 (param1)
,parameter2 (param2)
{
myMethod<ExternalLogicClass>(paramter1, parameter2);
template<class TemplateClass>
void MyClass::myMethod(xyzType parameter1, xyzType parameter2)
{
xyzType var = xyzObject->createSomething(new TemplateClass(parameter1), parameter2);
}
};
我的问题是,为什么有人这样做?没有模板就可以创建myMethod
。使用带模板的功能是否有优势,如果是,那么优势是什么?它应该什么时候应该,何时不应该使用?
任何帮助表示赞赏.. 谢谢
答案 0 :(得分:0)
发布后,myMethod
不使用MyClass
的任何成员数据。它可以作为非成员函数模板实现。
template<class TemplateClass>
void myMethod(xyzType parameter1, xyzType parameter2)
{
xyzType var = xyzObject->createSomething(new TemplateClass(parameter1), parameter2);
}
但是,如果myMethod
取决于MyClass
的某种状态,那么将它作为模板成员函数是有意义的。
MyClass
{
int myData;
template<class TemplateClass>
void myMethod(xyzType parameter1, xyzType parameter2)
{
xyzType var = xyzObject->createSomething(new TemplateClass(parameter1),
parameter2,
myData); // Member data.
}
};