類别範本中成員函式和普通類中成員函式建立時機是有區別的:
普通類中的成員函式一開始就可以建立
類别範本中的成員函式在呼叫時才建立
示例:
#include <iostream>
using namespace std;
#include <string>
//類别範本中成員函式建立時機
//類别範本中成員函式呼叫時才去建立
class Person1
{
public:
void showPerson1()
{
cout<<"Person1 show"<<endl;
}
};
class Person2
{
public:
void showPerson2()
{
cout<<"Person2 show"<<endl;
}
};
template<class T>
class MyClass
{
public:
T obj;
//類别範本中的成員函式,並不是一開始就建立的,而是在模板呼叫時再生成
void func1()
{
obj.showPerson1();
}
void func2()
{
obj.showPerson2();
}
};
void test01()
{
MyClass<Person1>m;
m.func1();
//m.func2();//error,說明函式呼叫才會去建立成員函式
}
int main()
{
test01();
return 0;
}
總結:
類别範本中的成員函式並不是一開始就建立的,在呼叫時才去建立