C++一般関数とテンプレート関数呼び出し規則
1192 ワード
/**呼び出しルールは次のとおりです:1.関数テンプレートと一般関数の両方が実現できる場合は、一般関数2を優先的に呼び出す.関数テンプレート3は、空のテンプレートパラメータリストから強制的に呼び出すことができる.関数テンプレートは、リロード4を発生することもできる.関数テンプレートがよりよく一致する場合は、関数テンプレート*/を優先的に呼び出します.
まとめ:関数テンプレートが提供されている以上、普通の関数を提供しないほうがいい.そうしないと、二義性が現れやすい.
まとめ:関数テンプレートが提供されている以上、普通の関数を提供しないほうがいい.そうしないと、二義性が現れやすい.
#include;
using namespace std;
/**
:
1. ,
2.
3.
4. ,
*/
//
void myPrint(int a,int b) {
cout << " " << endl;
}
template
void myPrint(T a, T b) {
cout << " " << endl;
}
template
void myPrint(T a, T b, T C) {
cout << " " << endl;
}
void test01() {
//1、 ,
// , , ,
int a = 10;
int b = 20;
myPrint(a, b); //
// 2、
myPrint<>(a, b); //
//3、
int C = 30;
myPrint(a, b, C); //
//4、 ,
char C1 = 'a';
char C2 = 'b';
myPrint(C1, C2); //
}
int main() {
test01();
system("pause");
return 0;
}