(C++) 函数重载机制-????前言
最编程
2024-06-08 16:42:09
...
在C++中函数重载是一个非常强大由复杂的问题。
在C++中本身就有许多函数机制,加上该语言也在不断的迭代,规则是越来越多。
????️参考资料
C++ Insights (cppinsights.io)
C++20高级编程 (豆瓣) (douban.com)
第2章 编译时多态
2.1 函数重载机制
函数重载有三个步骤:
- 名称查找
- 模板函数处理
- 重载决议
其中返回值不参与以上函数重载考虑体系。
????️实例代码
下方为书中的实例的整理代码。
#include <iostream>
#define LOG() std::cout << "[" << __LINE__ << "]" << __PRETTY_FUNCTION__ << std::endl
namespace animal {
struct Cat {};
void feed(Cat* foo, int) {
LOG();
}
} // namespace animal
struct CatLike {
CatLike(animal::Cat*) {
LOG();
}
};
void feed(CatLike) {
LOG();
}
template <typename T>
void feed(T*, double) {
LOG();
}
template <>
void feed(animal::Cat*, double) {
LOG();
}
int main() {
animal::Cat cat;
feed(&cat, 0);
}
先说结论,本代码的结果为:
[10]void animal::feed(animal::Cat*, int)