c++中代码命名空间规约
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中,在函数名前加上::就行了,
------解决方案--------------------
马克一下,我也想不懂。
#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中,在函数名前加上::就行了,
------解决方案--------------------
马克一下,我也想不懂。