模板类和在c ++中使用带有混合参数的重载构造函数

时间:2016-12-08 19:16:49

标签: c++ templates

对于我的构造函数和重载的构造函数定义,我有:

template <class T> Student<T>::Student(){}
template <class T> Student<T>::Student(string sName, int sAge) {
    m_name = sName;
    m_age = sAge;
}

我对如何在重载的构造函数中调用具有混合参数的构造函数感到困惑。 我的理解是,如果他们都是我的,我会做类似的事情:

Student <int> newStudent;
newStudent(10, 15);

1 个答案:

答案 0 :(得分:1)

Student<int>是一种类型。 Student<int> newStudent;创建该类型的变量,这意味着构建该对象。由于不包含任何参数,因此使用无参数构造函数。

newStudent(10, 15)是试图调用该类的::operator()(int, int)成员,可能会也可能不会定义。

你可能想要:

Student<int> newStudent("Mary", 15);

...在变量Student<int>中创建newStudent类型对象。