类模板中的成员函数创建时机(5)

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

1.普通类中的成员函数一开始就可以创建

2.类模板中的成员函数在调用时才创建

 1 #include <iostream>
 2 using namespace std;
 3 
 4 //类模板中成员函数创建时机
 5 //类模板中的成员函数在调用时才会创建
 6 
 7 class Person1
 8 {
 9 public:
10     void showPerson1(void)
11     {
12         cout << "Person1 show!" << endl;
13     }
14 };
15  
16 class Person2
17 {
18 public:
19     void showPerson2(void)
20     {
21         cout << "Person2 show!" << endl;
22     }
23 };
24 
25 template<class T>
26 class MyClass
27 {
28 public:
29     
30     T obj;
31 
32     //类模板中的成员函数
33     void func1(void)
34     {
35         obj.showPerson1();
36     }
37 
38     void func2(void)
39     {
40         obj.showPerson2();
41     }
42 };
43 
44 void test_01(void)
45 {
46     MyClass<Person1>m;
47     m.func1();
48     m.func2();//报错,类模板成员函数func2中的showPerson2不是Person1的成员
49 
50 }
51 
52 int main(void)
53 {
54     test_01();
55 
56     system("pause");
57     return 0;
58 }
 1 #include <iostream>
 2 using namespace std;
 3 
 4 //类模板中成员函数创建时机
 5 //类模板中的成员函数在调用时才会创建
 6 
 7 class Person1
 8 {
 9 public:
10     void showPerson1(void)
11     {
12         cout << "Person1 show!" << endl;
13     }
14 };
15  
16 class Person2
17 {
18 public:
19     void showPerson2(void)
20     {
21         cout << "Person2 show!" << endl;
22     }
23 };
24 
25 template<class T>
26 class MyClass
27 {
28 public:
29     
30     T obj;
31 
32     //类模板中的成员函数
33     void func1(void)
34     {
35         obj.showPerson1();
36     }
37 
38     void func2(void)
39     {
40         obj.showPerson2();
41     }
42 };
43 
44 void test_01(void)
45 {
46     MyClass<Person1>m;
47     m.func1();
48     //m.func2();//报错,类模板成员函数func2中的showPerson2不是Person1的成员,所以类模板成员函数func2无法被创建
49 }
50 
51 int main(void)
52 {
53     test_01();
54 
55     system("pause");
56     return 0;
57 }

 

posted @ 2020-04-27 09:53  坦率  阅读(362)  评论(0编辑  收藏  举报