C++ 普通函数和模板函数调用规则
生活随笔
收集整理的這篇文章主要介紹了
C++ 普通函数和模板函数调用规则
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
/**
調(diào)用規(guī)則如下:
1.如果函數(shù)模板和普通函數(shù)都可以實(shí)現(xiàn),優(yōu)先調(diào)用普通函數(shù)
2.可以通過空模板參數(shù)列表來強(qiáng)制調(diào)用函數(shù)模板
3.函數(shù)模板也可以發(fā)生重載
4.如果函數(shù)模板可以產(chǎn)生更好的匹配, 優(yōu)先調(diào)用函數(shù)模板
*/?
總結(jié):既然提供了函數(shù)模板,最好就不要提供普通函數(shù),否則容易出現(xiàn)二義性
#include<iostream>; using namespace std;/** 調(diào)用規(guī)則如下: 1.如果函數(shù)模板和普通函數(shù)都可以實(shí)現(xiàn),優(yōu)先調(diào)用普通函數(shù) 2.可以通過空模板參數(shù)列表來強(qiáng)制調(diào)用函數(shù)模板 3.函數(shù)模板也可以發(fā)生重載 4.如果函數(shù)模板可以產(chǎn)生更好的匹配, 優(yōu)先調(diào)用函數(shù)模板 *///普通函數(shù)與函數(shù)模板調(diào)用規(guī)則 void myPrint(int a,int b) {cout << "調(diào)用的普通函數(shù)" << endl; } template<typename T> void myPrint(T a, T b) {cout << "調(diào)用的模板" << endl; } template<typename T> void myPrint(T a, T b, T C) {cout << "調(diào)用重載的模板" << endl; } void test01() {//1、如果函數(shù)模板和普通函數(shù)都可以實(shí)現(xiàn),優(yōu)先調(diào)用普通函數(shù)//注意如果告訴編譯器普通 函數(shù)是有的,但只是聲明沒有實(shí)現(xiàn),或者不在當(dāng)前文件內(nèi)實(shí)現(xiàn),就會報(bào)錯找不int a = 10;int b = 20;myPrint(a, b); //調(diào)用普通函數(shù)// 2、可以通過空模板參數(shù)列表來強(qiáng)制調(diào)用函數(shù)模板myPrint<>(a, b); //調(diào)用函數(shù)模板//3、函數(shù)模板也可以發(fā)生重載int C = 30;myPrint(a, b, C); //調(diào)用重載的函數(shù)模板//4、如果函數(shù)模板可以產(chǎn)生 更好的匹配,優(yōu)先調(diào)用函數(shù)模板char C1 = 'a';char C2 = 'b';myPrint(C1, C2); //調(diào)用函數(shù)模板 }int main() {test01();system("pause");return 0; }?
總結(jié)
以上是生活随笔為你收集整理的C++ 普通函数和模板函数调用规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 复制字符串小程序笔记
- 下一篇: 汇编复制字符串小程序笔记