程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++當多次調用同一實參的模板,到底編譯器實列化幾次份代碼的問題

C++當多次調用同一實參的模板,到底編譯器實列化幾次份代碼的問題

編輯:C++入門知識

提問:


template <typename T> void fun(T num){};
如果調用
fun(double(1.23));
fun(int(1));
編譯器會實列化fun(double num)和fun(int num)
但是我想問得是如果調用兩次fun(int)
fun(int(1));
fun(int(2));
編譯器會實列兩個fun(int),還是一個啊????疑惑至極。
求好心人解答。

 

 

[cpp] 
#include <iostream>  
using namespace std; 
template <typename T>  
void fun(T num) 

    static int cnt = 0; 
    cnt++; 
    cout << "cnt = " << cnt << "\t" << "num = " << num << endl; 

int main() 

    int a = 1; 
    fun(a); 
    int b = 2; 
    fun(b); 
    double c = 2.23; 
    fun(c); 
    return 0; 

#include <iostream>
using namespace std;
template <typename T>
void fun(T num)
{
 static int cnt = 0;
 cnt++;
 cout << "cnt = " << cnt << "\t" << "num = " << num << endl;
}
int main()
{
 int a = 1;
 fun(a);
 int b = 2;
 fun(b);
 double c = 2.23;
 fun(c);
 return 0;
}
結果為:

cnt = 1    num = 1
cnt = 2    num = 2
cnt = 1    num = 2.23

結論:只有一次


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved