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

在类模板的构造函数的参数里用 typename是什么意思?
例如:insert_iterator(Cont& x,typename Cont::iterator it);
typename 不是用在类模板的形参里的吗?

交互式爱情
浏览 443回答 2
2回答

慕斯王

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

三国纷争

不管是模板类还是普通的类,如果你没有定义带参数的构造函数,那么编译器会为你隐含的实现一个没有参数的默认构造函数(这个默认构造函数什么都不做),但如果你定义了一个带参数的构造函数,编译器就不再为你创建一个默认的构造函数了,先拿普通的类来说:#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是不行的,编译不通过。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL