類别範本中成員函式建立時機

Ricky001發表於2024-12-07

類别範本中成員函式和普通類中成員函式建立時機是有區別的:
普通類中的成員函式一開始就可以建立
類别範本中的成員函式在呼叫時才建立
示例:

#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;
}

總結:
類别範本中的成員函式並不是一開始就建立的,在呼叫時才去建立

相關文章