c++ 如何在多个命名空间中查找函数的
在main函数中调用的函数名查找 ---------(local = global +函数的参数类所在的命名空间(ADL))
在多重命名空间中的函数中调用的函数,函数名查找 -------- (local = 当前作用域 + 函数的参数类所在的命名空间(ADL) ADL中存在还是会向上找)->函数所在命名空间 ->命名空间所在命名空间 ---一直到找到为止
找到了函数后,实行最佳匹配原则
附代码
#include "src/provide.h"
#include <stdio.h>
#include <cstring>
#include <unistd.h>
#include <iostream>
#include <sstream>
#include <vector>
#include <map>
#include <memory>
using namespace std;
void namea(fzy::Base::ptr a, double y) {
std::cout << "global" << std::endl;
};
namespace le {
// void namea(fzy::Base::ptr a, double y) {
// std::cout <<"le" << y+2 << std::endl;
// }
namespace p {
// void namea(fzy::Base::ptr c, int y,int d = 0) {
// std::cout << "p" << std::endl;
// }
namespace th {
void invoke() {
int y = 0;
fzy::Derive::ptr p (new fzy::Derive());
namea(p,y);
}
}
}
}
int main ()
{
// fzy::Derive::ptr p(new fzy::Derive());
// fzy::namea(p,2,3);
le::p::th::invoke();
}