C++学习日记15——命名空间

学习视频链接

一、使用命名空间的方式

1.1 方式1

注意 引入命名空间不能在头文件中,防止污染其他的环境

1.2 方式2

二、创建命名空间

2.1 单文件

#include <iostream>
using namespace std;

namespace Number_Func
{
    int add(int a, int b)
    {
        return a + b;
    }   
}

int add(int a, int b)
{
    return a + b + 1;
}

int main()
{
    int a = 3, b = 4;
    cout << add(a, b) << endl;
    cout << Number_Func::add(a, b) << endl;
    return 0;
}

2.2 多文件

number.h

number.cpp

point.h

point.cpp

main.cpp

#include <iostream>
#include "point.h"
#include "number.h"

int main()
{
    Math_Func::Number n1;
    Math_Func::Number n2(1.3);
    n1.info_number();
    n2.info_number();
    Math_Func::Point p1;
    Math_Func::Point p2(1.3, 2.3);
    p1.info_point();
    p2.info_point();
    return 0;
}

多文件要注意普通函数(不在类内)需要在头文件中声明,在 cpp 文件中实现

三、默认全局命名空间

使用 :: 表示使用全局的命名空间,反映到下面函数就是使用命名空间外的 add 函数,否则使用命名空间内的 add

#include <iostream>
using namespace std;

int add(int a, int b)
{
    return a + b + 1;
}

namespace Number_Func
{
    int add(int a, int b)
    {
        return a + b;
    }   
    int add2(int a, int b)
    {
        return ::add(a, b) + 1;
    }
}

int main()
{
    int a = 3, b = 4;
    cout << add(a, b) << endl;
    cout << Number_Func::add(a, b) << endl;
    cout << Number_Func::add2(a, b) << endl;
    return 0;
}

四、using 的用法

4.1 局部引入命名空间

4.2 只引入命名空间中的类

五、嵌套命名空间和别名

5.1 嵌套命名空间

#include <iostream>

int add(int a, int b)
{
    return a + b + 1;
}

namespace Number_Func
{
    int add(int a, int b)
    {
        return a + b;
    }   
    int add2(int a, int b)
    {
        return ::add(a, b) + 1;
    }
    namespace Next_Number
    {
        int add(int a, int b) 
        {
            return a + b + 10;
        }
    }
}

int main()
{
    int a = 3, b = 4;
    
    {
        using namespace Number_Func;
        using namespace std;
        cout << ::add(a, b) << endl;
        cout << Number_Func::add(a, b) << endl;
        cout << Number_Func::add2(a, b) << endl;
    }
    {
        using namespace std;
        cout << Number_Func::Next_Number::add(a, b) << endl;
    }
    return 0;
}

5.2 别名

经验分享 程序员 微信小程序 职场和发展