命名空间就是为了防止名字冲突而引入的一种机制。
命名空间不可以同名。
命名空间实际上作用域。
teacher.h
#pragma once
#include <iostream>
using namespace std;
namespace teachernamespace {
void test() {
cout << "teacher namespace "<<endl;
}
}
teacher2.h
#pragma once
#include <iostream>
using namespace std;
namespace teacher2namespace {
void test() {
cout << "teacher2 namespace " << endl;
}
}
main.cpp
#include <iostream>
#include <stdio.h>
using namespace std;
#include "teacher.h"
#include "teacher2.h"
void main() {
teachernamespace::test();
teacher2namespace::test();
cout << "断点在这里" << endl;
}
//运行结果
teacher namespace
teacher2 namespace
断点在这里
如果之前在a.h中定义过命名空间teacher2namespace,在b.h中再次定义teacher2namespace时,会打开之前的teacher2namespace,而不是问题
teacher3.h
#pragma once
#include <iostream>
using namespace std;
//虽然之前在teacher2.h中,定义过命名空间 teacher2namespace,在这里再次定义的时候,会打开,而不是有error
namespace teacher2namespace {
//之前定义过test()方法,就不能再该 namespace :teacher2namespace 中定义test()方法了
void test2() {
cout << "teacher2 namespace test2 " << endl;
}
}
namespace 的使用
using namespace teacher2namespace;
void main() {
teachernamespace::test();
test();
test2();
cout << "断点在这里" << endl;
}
运行结果:
teacher namespace
teacher2 namespace
teacher2 namespace test2
断点在这里