C++ 名称查找规则之 Koenig lookup
来源:互联网 发布:西安软件培训基地 编辑:程序博客网 时间:2024/05/20 09:06
saturnman.blog.163.com/blog/static/5576112010111578116/
#include<iostream>
usingnamespace std;
namespace test_space
{
class Test
{
};
void test_func(Test& t1,Test& t2)
{
}
void test_func(int& t1,int& t2)
{
}
}
int main()
{
test_space::Test t1;
test_func(t1,t1);//Ok
test_func(3,3); //Error
return0;
}
如果使用GCC编译则得到如下错误信息:
C:\Documents and Settings\saturnman\cpp>g++ name.cpp
name.cpp: In function `int main()':
name.cpp:21: error: `test_func' undeclared (first use this function)
name.cpp:21: error: (Each undeclared identifier is reported on
function it appears in.)
如果使用VC++编译器则得到如下错误信息:
C:\Documents and Settings\saturnman\cpp>cl name.cpp
用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 15.00.21022.08 版
版权所有(C) Microsoft Corporation。保留所有权利。
name.cpp
C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\xlocale(342) : warning C
4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc
name.cpp(21) : error C3861: “test_func”: 找不到标识符
C:\Documents and Settings\saturnman\cpp>
注意到错误的发生是在 test_func(3,3); 这里,而test_func(t1,t1); 却没有发生错误,这就是传说中的koenig名称查找规则,test_func(t1,t1)由参数的名字空间找到了所要调用的函数,但是由于test_func(3,3)没有参数在test_space名称空间中,所以无法找到test_fun调用这个函数,于是产生了如上的编译错误,在STL的标准库中的操作符重载时大量用到了这个特性。
- C++ 名称查找规则之 Koenig lookup
- C++ 名称查找规则之 Koenig lookup
- 快速理解c++编译器名称查找规则koenig lookup(ADL)
- 立此存照(19)[C++]C++中的名称查找(name lookup)
- c++编译器名字查找之ADL(argument-depentment lookup)规则
- c++编译器名字查找规则之ADL和Ordinal Lookup比较
- ADL(Koenig)查找
- Argument Dependent Lookup (ADL, a.k.a. Koenig Lookup) 解析
- Argument-Dependent Lookup (aka ADL, or “Koenig Lookup”)
- Python LGB名称查找规则
- Koenig查找(ADL)简析
- Argument Dependent Lookup (ADL, a.k.a. Koenig Lookup) 解析 (1)
- Argument Dependent Lookup (ADL, a.k.a. Koenig Lookup) 解析 (2)
- Argument Dependent Lookup (ADL, a.k.a. Koenig Lookup) 解析 (3)
- [C++再学习系列] ADL(Koenig)查找
- 第四节 常用组件 之 Lookup 查找组件
- 第七节 常用组件 之 Lookup 查找条件
- 第八节 常用组件 之 Lookup 查找高速缓存
- NYOJ 105 九的余数
- 逝去的绝响
- .net mvc 微信开发笔记(四)------STREAM,POST/GET,XML解析,获取用户普通消息
- 内核配置编译
- Android反编译xml文件
- C++ 名称查找规则之 Koenig lookup
- Java指针详解___案例解答
- 实现SSH免密码登陆
- Linux下文件目录含义
- Linux守护进程(转载)
- 归并排序(二路归并)
- Java学习之多态
- GCC、GDB、Makefile
- PCL1.7.1安装方法