一、C++命名空间

本文详细介绍了C++中命名空间的基本概念,包括控制名字可见性、命名空间的使用方法、定义与访问、嵌套命名空间、全局范围限制以及命名空间别名。通过实例演示了如何正确运用这些特性。
摘要由CSDN通过智能技术生成

一.基本常识

        C++允许我们对名字的产生和名字的可见性进行控制,C语言可以通过使用static关键字使得名字只得在本编译单元内可见,在C++中我们可以通过一种命名空间来控制对名字的访问。

        在C++中,名称(name)可以是常量符号、变量、宏、函数、结构体、枚举、类和对象等等

        std是C++标准命名空间,C++标准程序库中的所有标识符都被定义在std中,比如标准库中的类iostream、vector等都定义在该命名空间中,使用时要加上using声明(using namespace std)或

using指示(如std::cout)

二、命名空间的使用

#include <iostream>

using namespace std;

int main() {
    //1.不声明使用命名空间
    std::cout<<"hello,world!"<<std::endl;
    //2.使用using声明 using namespace std
    cout<<"hello,world!"<<endl;

    return 0;
}

1.命名空间的定义

namespace 名称
{
    //定义变量、函数、类型...
    
}

2.命名空间成员的访问

使用作用域操作符 ::

空间名::成员

#include <iostream>

using namespace std;

//声明一个命名空间A
namespace A
{
    int a;
    void func()
    {
        cout<<"hello,A!"<<endl;
    }
}

//声明一个命名空间B
namespace B
{
    int a;
    void func()
    {
        cout<<"hello,B!"<<endl;
    }
}

int main() {
    A::a = 100;
    B::a = 10;
    //1.空间中变量的访问
    cout<<A::a<<endl;
    cout<<B::a<<endl;
    //2.空间中函数的访问
    A::func();
    B::func();
    return 0;
}

3.命名空间只能全局范围内定义(以下错误写法)

void test()    //函数里面定义命名空间 err
{
    namespace A
    {
        int a;
    }
    namespace B
    {
        int b;
    }
    A::a=100;
    B::b=200;
}

int main() {
    test();
    return 0;
}

error: 'namespace' definition is not allowed here namespace A
error: 'namespace' definition is not allowed here namespace B

4.命名空间嵌套定义

//命名空间的嵌套定义
namespace C
{
    int a = 100;
    namespace A
    {
        int b = 200;
    }
}

int main() {
    cout<<C::a<<endl;
    cout<<C::A::b<<endl;

    return 0;
}

5.将命名空间的声明和实现分开

        将声明定义在.h里面,将实现定义在.cpp里面

6.命名空间别名

namespace studentInfo
{
    void func()
    {
        cout<<"hello new student"<<endl;
    }
}

int main() {
    studentInfo::func();
    //给命名空间取别名
    namespace stdInfo = studentInfo;
    stdInfo::func();    

    return 0;
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值