c++ 重名namespace的使用

在不同的头文件中定义的了相同名字的namespace。

当你在一个cpp中引用这些头文件时,这些namespace 相当于是同一个namespace。

1.h

#ifndef _1_H
#define _1_H


#include<iostream>
using namespace std;

namespace PP{
class A
{
public:
    string _name;
    A(string name):_name(name){};
    string getName();
};
}
#endif /*_1_H*/

1.cpp

#include"1.h"

using namespace PP;
using namespace std;

string A::getName()
{
    return _name;
}

2.h

#ifndef _2_H
#define _2_H


#include<iostream>
using namespace std;
namespace PP{
class B
{
public:
    int _id;
    B(int id):_id(id){};
    int getId();
};
}
#endif /*_2_H*/

2.cpp

#include"2.h"

using namespace std;
using namespace PP;

int B::getId()
{
    return _id;
}

main.cpp

#include<iostream>
#include"1.h"
#include"2.h"

using namespace std;
using namespace PP;

int main()
{
    A a("a");
    B b(1);
    cout<<a.getName()<<endl;
    cout<<b.getId()<<endl;
    return 0;
}

Makefile

main: 1.o 2.o main.o
    g++ 1.o 2.o main.o -o main

1.o: 1.h 1.cpp
    g++ -c 1.cpp -o 1.o

2.o: 2.h 2.cpp
    g++ -c 2.cpp -o 2.o

main.o: main.cpp
    g++ -c main.cpp -o main.o
文章目录