首页 > 解决方案 > 模板构造函数如何工作?

问题描述

在某些课程中,我发现了一些带有类型的构造函数的代码。我认为构造函数不可能的事情。

更具体地说,我不明白这两段代码:

template<class T>
class ValuePtr
{
public:
    template<class T> ValuePtr(ValuePtr<U> const &uPtr) :
        myPtr(uPtr.get()->clone())
    {}
    T* get() {return myPtr;}
    // ...
};

而这种变化:

template<class T>
class ValuePtr
{
public:
    template<class U> ValuePtr(ValuePtr<U> const &uPtr) :
        myPtr(uPtr.get()->clone())
    {}
    T* get() {return myPtr;}
    // ...
};

我看到的是一个复制构造函数,我理解,但是为什么在这种类型的构造函数之前有一个类型,为什么在第二个代码中,类型不同?(模板而不是模板)?这些构造函数有什么意义?

标签: c++typesconstructorcopy-constructor

解决方案


推荐阅读