先看代码
class Person1
{
public:
void showPerson1()
{
cout << "Person1的调用" << endl;
}
};
class Person2
{
public:
void showPerson2()
{
cout << "Person2的调用" << endl;
}
};
template<class T>
class myClass
{
public:
T obj;
void func1()
{
obj.showPerson1();
}
void func2()
{
obj.showPerson2();
}
};
思考一个问题,showPerson1() 和showPerson2(),什么时候创建?
请看如下代码:
myClass<Person1>m;
m.func2();
我们清楚,Person1里并没有showPerson2(),但是在编译的时候并没有报错。这说明在编译阶段,fun2()函数并没有被创建出来,所以编译器就无从检测person1是否能调用showPerson2(),因此可以得出结论,模板中的成员函数,比如fun1(),fun2(),只有在程序运行的时候才会被创建。