读书人

c++中代码命名空间规约

发布时间: 2012-12-30 10:43:15 作者: rapoo

c++中代码命名空间规则
#include<iostream>
using namespace std;
void swap(int& a, int& b)
{


}


int main()
{



int x,y;

x=1;
y=2;

swap(x,y);


return 0;
}


结果进入的是自定义函数swap,不是库里的,

问题来了:

但编译器发现swap的时候, 有2个选择,一个是库,一个是自己定义的。

那么为什么编译器,会去调用我们自己写的呢?


我自己的在全局域中,而库的则在std中。

但是 故意加一句:usinsg namepasce std;

就是想知道,编译器为什么不去调用库的,
[解决办法]
名字在查找的时候,优先查找local,再是global
[解决办法]
(1) 类成员函数优先 ( 对象所在的类 -》 基类 )。 一经找到就停止查找 。

(2 )如果没有 ,在相应的名字空间中做进一步的搜索 ;


(3) 如果还没有 , 会根据函数参数所在的名字空间中查找 (keoning 查找 )。

[解决办法]
其实如果要使用系统函数,特别是在MFC中,在函数名前加上::就行了,
[解决办法]
马克一下,我也想不懂。

读书人网 >C++

热点推荐