为了账号安全,请及时绑定邮箱和手机立即绑定

求助,关于在类模板的构造函数的参数里用 typename是什么意思?

求助,关于在类模板的构造函数的参数里用 typename是什么意思?

交互式爱情 2021-05-04 10:06:46
在类模板的构造函数的参数里用 typename是什么意思?例如:insert_iterator(Cont& x,typename Cont::iterator it);typename 不是用在类模板的形参里的吗?
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

形参类型....
你定义了 什么类型
后来调用这个函数的时候 就是什么类型.
比如当初你 定义了 vector<int>
那么 这里的 insert_iterator() 中的 typename 就是 int

查看完整回答
反对 回复 2021-05-09
?
三国纷争

TA贡献1804条经验 获得超7个赞

不管是模板类还是普通的类,如果你没有定义带参数的构造函数,那么编译器会为你隐含的实现一个没有参数的默认构造函数(这个默认构造函数什么都不做),但如果你定义了一个带参数的构造函数,编译器就不再为你创建一个默认的构造函数了,先拿普通的类来说:

#include <iostream>
using namespace std;

class CTest
{
public:
CTest(int val)
{
m_nVal = val;
}

private:
int m_nVal;
};

int main()
{
CTest test(8);
}
编译运行都没有问题,但是如果你写成CTest test;就不行了,没有默认构造函数了。模板类是一样的道理,所以问题不在这里,如下程序同样编译运行通过:
#include <iostream>
using namespace std;

template<typename T>
class CTest
{
public:
CTest(T val)
{
m_nVal = val;
}

private:
T m_nVal;
};

int main()
{
CTest<int> test(7);
}
但是如果你写CTest<int> test是不行的,编译不通过。



查看完整回答
反对 回复 2021-05-09
  • 2 回答
  • 0 关注
  • 442 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信