c++模板学习04之普通函数与模板函数调用规则
2023-09-14 09:02:34 时间
普通函数与模板函数调用规则
调用规则如下:
1.如果函数模板和普通函数都可以实现,优先调用普通函数
#include<iostream>
using namespace std;
//1.如果函数模板和普通函数都可以实现,优先调用普通函数
//普通函数
void func(int a, int b)
{
cout << "大忽悠到此一游!" << endl;
}
//模板函数
template<class T>
void func(T a, T b)
{
cout << "大忽悠到此一游!!!" << endl;
}
int main()
{
func(10,20);
system("pause");
return 0;
}
注意:如果普通函数只有声明没有实现,也会优先调用普通函数,但此时编译器会报错
2.可以通过空模板参数列表来强制调用函数模板
#include<iostream>
using namespace std;
void func(int a, int b)
{
cout << "大忽悠到此一游!" << endl;
}
template<class T>
void func(T a, T b)
{
cout << "大忽悠到此一游!!!" << endl;
}
int main()
{
//func(10,20);
//2.通过空模板参数列表强制调用模板
func<>(10, 20);
system("pause");
return 0;
}
3.函数模板可以发生重载
#include<iostream>
using namespace std;
//普通函数此时只有声明,没有实现
void func(int a, int b)
{
cout << "大忽悠到此一游!" << endl;
}
template<class T>
void func(T a, T b)
{
cout << "大忽悠到此一游!!!" << endl;
}
//模板函数重载
template<class T>
void func(T a,T b,T c)
{
cout << "大忽悠到此一游!!!!" << endl;
}
int main()
{
func(10, 20, 30);
system("pause");
return 0;
}
4.如果函数模板可以发生更好的匹配,优先调用函数模板
#include<iostream>
using namespace std;
//普通函数此时只有声明,没有实现
void func(int a, int b)
{
cout << "大忽悠到此一游!" << endl;
}
template<class T>
void func(T a, T b)
{
cout << "大忽悠到此一游!!!" << endl;
}
//模板函数重载
template<class T>
void func(T a,T b,T c)
{
cout << "大忽悠到此一游!!!!" << endl;
}
int main()
{
//如果函数模板产生更好的匹配,优先调用函数模板
char a = 'a';
char b = 'b';
//会调用函数模板,因为如果调用普通函数还需发生隐式类型转换,调用函数模板无需转换
//编译器会从简处理
func(a, b);
system("pause");
return 0;
}
相关文章
- C++学习——c++逗号操作符说明(附加全部运算符优先级)
- Dev-c++中将头文件和头文件函数分离,编译主函数跳出undefined reference to 的问题解决
- C++和Java哪个比较好入门?初学者该如何选择?
- c++ auto类型_auto C++
- Linus Torvalds:“C++ 真是一门很烂的语言!”
- C++stl库_c++库
- C++基本概念_c语言 c++区别
- list/forward_list-C++容器
- C++字符串加密_c++字符串连接函数
- 【C++】const关键字
- c++的链表-链表入门(C++)
- C++提高编程笔记合集
- C++构造函数、析构函数和变量的生存期
- C++ double和float(浮点类型)详解
- C++ STL关联式容器自定义排序规则(2种方法)
- C++ STL无序容器自定义哈希函数和比较规则(超级详细)
- 用c++实现x的y次幂的代码
- C++中栈结构建立与操作详细解析
- C++中的常对象与常对象成员详解
- C++循环队列实现模型
- 如何正确使用Nodejs的c++module链接到OpenSSL
- VC++中HTControl控制类使用之CHTDlgBase对话框基类实例
- C++深度优先搜索的实现方法