2 回答

TA貢獻1864條經驗 獲得超2個贊
形參類型....
你定義了 什么類型
后來調用這個函數的時候 就是什么類型.
比如當初你 定義了 vector<int>
那么 這里的 insert_iterator() 中的 typename 就是 int

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是不行的,編譯不通過。
添加回答
舉報