将参数作为默认值的构造方法

时间:2013-07-25 21:45:06

标签: c++ constructor default-constructor

我的代码是

template <class T1, class T2>
class MyClass
{

    T1 first;
    T2 second;
    public:
    //default constructor
    MyClass():first(T1()), second(T2()) {}
}

我想拥有一个可以带0,1或2个参数的构造函数(默认参数)。这里T1和T2既可以是原始类型也可以是非原始类型。

3 个答案:

答案 0 :(得分:3)

用这个构造函数替换现有的构造函数:

MyClass(const T1& t1 = T1(), const T2& t2 = T2()):first(t1), second(t2) {}

答案 1 :(得分:1)

试试这个:

template <class T1, class T2>
class MyClass
{

    T1 first;
    T2 second;
    public:
    //default constructor
    MyClass(T1 fst=T1(), T2 sec = T2()):first(fst), second(sec) {}
};

int main()
{
    MyClass<int,int> c;
    MyClass<int,int> d(5);
    MyClass<int,int> e(5,10);
}

您只需在定义中指定默认值即可。您必须要小心,默认参数始终是参数列表中的最后一个。并且在0,1或2个参数的所有情况下都需要一个构造函数。

答案 2 :(得分:0)

默认参数可以在构造函数初始化列表中用于所有其他函数。

 MyClass(T1 t1 = T1(), T2 t2 = T2()) : first(t1), second(t2) {}