c++类模板中成员函数创建时机

类模板中成员函数创建时机

类模板中成员函数和普通类中成员函数创建时机是有区别的:

  • 普通类中的成员函数一开始就可以创建
  • 类模板中的成员函数在调用时才创建

示例:

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 fun1() { obj.showPerson1(); }
    void fun2() { obj.showPerson2(); }

};

void test01()
{
    MyClass<Person1> m;

    m.fun1(); 
    //编译会出错,提示 "showPerson2": 不是 "Person1" 的成员  
    //说明函数调用才会去创建成员函数,在程序运行前编译阶段就开始调用了
    //类模板中的成员函数并不是一开始就创建的,在调用时才去创建
   // m.fun2(); 
}

int main() {

    test01();

    system("pause");

    return 0;
}

总结:类模板中的成员函数并不是一开始就创建的,在调用时才去创建

posted @ 2022-04-16 17:55  安静点--  阅读(187)  评论(0)    收藏  举报