[笔试题 5][c/c++]模板函数和普通函数的调用优先顺序
2011-09-18 23:19
417 查看
template <typename T> inline void print(T t) { cout<<"generic::"<<t<<endl; } void print(int a) { cout<<a<<endl; }
print(true);
此时注意:
通常调用的顺序是普通函数优先于模板函数而进行调用。
但此处bool优先被匹配到了。bool和int不存在冲突。
故输出为 generic:: 1;
但若改为如下形式
template <typename T> inline void print(T t) { cout<<"generic::"<<t<<endl; } void print(bool a) { cout<<a<<endl; }
则优先匹配到的是print(bool)普通函数!!
输出为1.
ps:以下形式,结果输出呢?^_^
template <typename T> inline void print(T t) { cout<<"generic::"<<t<<endl; } void pirnt(bool a) { cout<<a<<endl; }当时自己闹了个笑话。。。。。
不过把问题搞清楚了,也是值得的!
9-18写于实验室。2场笔试,伤不起。。。
相关文章推荐
- C++ 函数调用的匹配顺序
- C++普通函数与模板函数以及特化函数重载的优先级问题
- 函数调用约定(注意c++普通函数成员调用时有this参数)
- C++ 函数调用的匹配顺序
- C++ 普通函数和虚函数调用的区别
- 编程经验点滴(二)——《C、C++中函数调用时参数压栈的顺序问题》
- 6.Lua调用c++函数传递普通参数
- C++语言笔试题目 C++中为什么用模板类&& 类中如何使用const &&函数重载,我们靠什么来区分调用的那个函数?靠返回值判断可以不可以
- 写程序说明C++中成员函数的初始化顺序只跟在类中的声明顺序有关, 而跟初始化列表中的顺序无关(笔试考过)
- C++中通过派生类调用第二基类的普通成员函数时this指针的调整
- C++中virtual(虚函数)和普通函数调用的不同
- C++继承中构造函数、析构函数调用顺序及虚函数的动态绑定
- c++之——派生类的同名成员和函数调用方式及构造析构顺序
- C++之类的成员函数的调用 vs. 普通函数的调用
- C++ 模板函数和普通函数匹配规则
- 从一道题谈C++中构造函数调用构造函数(像普通函数一样调用构造函数)
- C++ 函数调用的匹配顺序
- C++中关于构造函数调用次序的一道经典例题及对虚函数构造顺序的理解
- C++中对象作为函数形参,返回值时,构造函数,复制构造函数,析构函数的调用顺序(1)
- 3.C++ 函数返回值、函数调用(普通、嵌套、递归调用)