使用模板的方法

时间:2017-03-24 15:12:24

标签: c++ c++11 templates methods

我对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。使用带模板的功能是否有优势,如果是,那么优势是什么?它应该什么时候应该,何时不应该使用?

任何帮助表示赞赏.. 谢谢

1 个答案:

答案 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.
    }
};