欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

(C++) 函数重载机制-????前言

最编程 2024-06-08 16:42:09
...

在C++中函数重载是一个非常强大由复杂的问题。

在C++中本身就有许多函数机制,加上该语言也在不断的迭代,规则是越来越多。

????️参考资料

C++ Insights (cppinsights.io)

C++20高级编程 (豆瓣) (douban.com)

第2章 编译时多态

2.1 函数重载机制

函数重载有三个步骤

  1. 名称查找
  2. 模板函数处理
  3. 重载决议

其中返回值不参与以上函数重载考虑体系。

????️实例代码

下方为书中的实例的整理代码。

#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)