C++ namespace 和 std 浅释
从一个简单的打印程序开始说明
void main( ) {
std::cout << ""; // 错误:std不存在。
cout << ""; // 错误:std不存在cout就不用提了。
}
using namespace std;
void main( ) {
std::cout << ""; // 错误:std不存在。
cout << ""; // 错误:std不存在cout就不用提了。
}
#include<iostream>
void main( ) {
std::cout << ""; // OK:可通过std调用cout。
cout << ""; // 错误:cout仍然被包在std里面,不可见。
}
#include<iostream>
using namespace std;
void main( ) {
std::cout << ""; // OK:可通过std调用cout。
cout << ""; // OK:using namespace std 令到 iostream 下的std 可见。
}
#include<iostream>
using namespace std;
这两句话, 相当于把iostream里面的std域包含在当前的文件中
=====iostream.h======
namespace std
{
....
cout() {
....
}
.....
}
当两个不同的领域有相同的函数的时候,
namespace 可以用于区分调用
这个是namespace 最核心的意义
========blabla.h========
namespace blabla
{
void print()
{
// function blabla::print()
}
}
========blablablabla.h========
namespace blablablabla
{
void print()
{
// function blabla::print()
}
}
在x.h 里面如果包含blabla.h 和 blablablabla.h
我们可以通过namespace来调用相应的print函数
include <blabla.h>
include <blablablabla.h>
int main() {
blabla::print();
blablablabla::print();
}