1. 程式人生 > >[C++]類模板在何時例項化?

[C++]類模板在何時例項化?

 1 /**
 2  * Copyright 2010 Lei Hu. All rights reserved.
 3  * Lei Hu PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 4 */ 5 #include <iostream> 6 usingnamespace std;
 7  8 template <typename T>class A;
 9 10 extern A<char> g; // ok, just declare.11 12 void f1(A<int> p) // error, undefined type 'A<int>'
13 {
14 15 }
16 17 template <typename T>18 void f2(A<T> p); // ok.19 20 void f3(A<int>&p) // ok, reference or pointer.21 {
22 23 }
24 25 template <typename T>26 void f4(A<T> p) // ok, template non-instance.27 {
28 29 }
30 31 A<int> f5(); // ok, just declare function.32 33 A<
int> f6() // error, use of undefined type 'A<int>'34 {
35 36 }
37 38 template <typename T>39 A<T> f7() // ok, template non-instance40 {
41 42 }
43 44 void main()
45 {
46     A<char>*= NULL;
47     A<char> b; // error, uses undefined class 'A<char>'48 }
49